单身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()