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
当您存储可变状态时的选项1(类或结构),因为您需要其他实例。
当您要存储静态变量时,可以使用选项2(作用域全局变量),因为它速度更快且使用的内存更少。
全球状态通常被认为是“坏事”。很难考虑,会引起问题,但有时是不可避免的。
SomeManager
someVariable
static var sharedManager = SomeManager()
sharedManager
在选项2中,SomeManager即使不执行任何操作,也可以创建。您可以通过SomeManager不使用任何情况的枚举来防止这种情况。
enum SomeManager { static var someVariable: String? }
您仍然可以这样做:
SomeManager.someVariable
但是你做不到
let manager = SomeManger()