当前位置: 首页 > 面试题库 >

Swift中静态函数和单例类之间的区别

李耀
2023-03-14
问题内容

我想创建一个将保留所有实用程序方法的类,并将在整个应用程序中使用这些方法。
问题:1
创建一个单例类并在其中保留所有必需的方法是好事,还是应该创建一个所有函数都是静态的类?
问题:2
快速的上述两种方法之间的主要区别是什么?
问题:3
它会如何影响iOS的性能?


问题答案:

当然,这听起来令人困惑并且可以辩论。但是,从最佳实践中,我可以提出一些建议。

Singleton 通常用于创建资源密集型和一个计时器初始化,例如:数据库连接器,登录处理程序等。

实用程序类 是仅具有静态函数和变量的类。它不应处理异步任务和昂贵的资源处理(例如,打开数据库连接器)。

在您的情况下,如果该实用程序正在执行一些资源密集型过程,则最好将其包装为单例。如果没有,那么我认为类中的静态函数更好。这也是因为,Swift将使用
static dispatch调度 类中的所有静态函数。尽管Swift喜欢进行优化,但是在Singleton中这不是正确的。

*就使用Objective-C运行时而言, *静态调度比动态调度快4倍 。迅速也是如此。但是,动态调度只需要4纳秒。

我希望这可以使您清楚。



 类似资料:
  • 问题内容: 静态类和单例模式之间存在什么真正(即实用)的区别? 两者都可以不实例化地调用,都只提供一个“实例”,并且它们都不是线程安全的。还有其他区别吗? 问题答案: 是什么让您说单例或静态方法不是线程安全的?通常,两者 都应 实现为线程安全的。 单例和一堆静态方法之间的最大区别在于,单例可以实现接口(或从有用的基类派生,尽管根据我的经验,这种情况不那么常见),因此您可以将单例当作“只是另一个实施

  • 问题内容: 我可以在Swift库中看到这些定义: 定义为的成员函数与定义为的另一个成员函数有什么区别?仅仅是为了结构和枚举的静态功能,以及用于类和协议吗?还有其他应该知道的区别吗?在语法本身中具有这种区别的原理是什么? 问题答案: 是否仅将static用于结构和枚举的静态函数,将class用于类和协议? 那是主要区别。其他一些区别是类函数是动态调度的,并且可以被子类覆盖。 协议使用class关键字

  • 我可以在Swift库中看到这些定义: 定义为的成员函数和定义为的成员函数之间有什么区别?简单地说,是用于结构和枚举的静态函数,而是用于类和协议吗?还有什么其他的不同之处是你应该知道的吗?语法本身有这种区别的理由是什么?

  • 我找不到和之间的任何区别。据我所知,类静态函数不能被继承,struct也没有继承的选项。 请不要被类中的静态函数和类函数所混淆。 VS

  • 问题内容: 给定跟随类层次结构,以下语句的动态和静态类型是什么? 类层次结构: 对于以下每个语句,静态类型?动态类型?: 我 知道我的答案/问题将是静态和动态类型的Fruit。 在编译时将为Alpha类型(静态),在运行时将为Fruit类型(动态)。 在编译时将为Gamma类型(静态),在运行时将为Fruit类型(动态)。 但是我不知道其他两个答案。Beta b = f是一个实例,其中同一超类的两

  • 问题内容: 我知道这是一个重复的问题,但是我想以一种非常具体的方式提出这个问题,以阐明一个非常重要的观点。主要问题是:如果一个相同的类是静态嵌套类,而另一个是常规的顶层类,而不是访问包含类中的私有静态字段,则这些相同的类之间是否有任何区别? 换句话说:可以直接访问的内容与可以直接访问的内容之间唯一唯一的区别是不能直接访问吗?还是存在其他通常不会讨论或遇到的细微差别? 问题答案: 您的说法是正确的: