单身VS VS静态(类)variables
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;博士
select1(类或结构)当你存储可变状态,因为你需要其他的实例。
选项2(范围内的全局variables),当你想存储静态variables,因为它更快,使用更less的内存。
单variables类(或结构)与variables
全球国家通常被认为是“坏事”。 这是很难想象,造成问题,但有时是不可避免的。
- 创build一个类,如果你想有多个
SomeManager
实例。 - 单身人士可以是一个很好的默认实例,但是可能会有边缘情况下你想要单独的行为(testing)。
- dependency injection…是
SomeManager
存储全局状态时相关的大话题。
静态variables
- 当
someVariable
是一个常量时总是使用。 - 不需要额外的存储
static var sharedManager = SomeManager()
; 你只使用你实际需要的内存。 - 稍微快一些,因为你不需要加载
sharedManager
到内存中,然后访问它的成员someVariable
。 你直接访问一些someVariable
。
奖励提示:
在选项2中,您可以创buildSomeManager
即使它没有做任何事情。 您可以通过将SomeManager
转换为无枚举的枚举来防止这种情况。
enum SomeManager { static var someVariable: String? }
你仍然可以这样做:
SomeManager.someVariable
但是你不能这样做
let manager = SomeManger()