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
答案 0 :(得分:11)
选项1(类或结构),当您存储可变状态时,因为您需要其他实例。
选项2(作用域全局变量),当您想要存储静态变量时,因为它更快并且使用更少的内存。
全球国家通常被认为是“坏事”。很难思考,导致问题,但有时是不可避免的。
SomeManager
个实例,请创建一个类。 SomeManager
存储全局状态时相关的重要主题。someVariable
为常数时始终使用。static var sharedManager = SomeManager()
不需要额外存储空间;你只使用你真正需要的记忆。sharedManager
加载到内存中,然后访问它的成员someVariable
。您可以直接访问someVariable
。在选项2中,您可以创建SomeManager
,即使它没有做任何事情。您可以通过将SomeManager
转换为无枚举的枚举来阻止此操作。
enum SomeManager {
static var someVariable: String?
}
你仍然可以这样做:
SomeManager.someVariable
但你不能这样做
let manager = SomeManger()