Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
Swift的最佳做法是什么?
选项1:
然后
选项2:
然后
如果您想拥有多个 一个单例可以是很好的默认实例,但是在某些极端情况下,您希望具有单独的行为(测试)。 依赖注入(inject)...是一个大主题,如果
静态变量
始终在 不需要额外存储 速度稍快,因为您不需要将
奖金提示:
在选项2中,即使不执行任何操作,您也可以创建
您仍然可以这样做:
但是你做不到
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
Swift的最佳做法是什么?
选项1:
class SomeManager {
static var sharedManager = SomeManager()
var someVariable: String?
}
然后
let something = SomeManager.sharedManager().someVariable
选项2:
class SomeManager {
static var someVariable: String?
}
然后
let something = SomeManager.someVariable
最佳答案
tl; dr
当您存储可变状态时的选项1(类或结构),因为您需要其他实例。
当您要存储静态变量时,可以使用选项2(作用域全局变量),因为它速度更快且使用的内存更少。
具有变量的Singleton类(或结构)
全局状态通常被认为是“坏事”。很难考虑,会引起问题,但有时是不可避免的。
SomeManager
实例,请创建一个类。 SomeManager
存储全局状态,则该主题相关。 静态变量
someVariable
为常量时使用。 static var sharedManager = SomeManager()
;您仅使用实际需要的内存。 sharedManager
加载到内存中,然后访问它的成员someVariable
。您直接访问someVariable
。 奖金提示:
在选项2中,即使不执行任何操作,您也可以创建
SomeManager
。您可以通过将SomeManager
变成没有大小写的枚举来防止这种情况。enum SomeManager {
static var someVariable: String?
}
您仍然可以这样做:
SomeManager.someVariable
但是你做不到
let manager = SomeManger()
09-07 11:43