一尘不染

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

swift

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


阅读 337

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

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

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

我希望这可以使您清楚。

2020-07-07