【问题标题】:With the Objective-C/Swift Singleton model, why do we create a shared instance and not just use class methods? [duplicate]使用 Objective-C/Swift 单例模型,为什么我们要创建共享实例而不只是使用类方法? [复制]
【发布时间】:2014-07-01 16:58:13
【问题描述】:

似乎我们总是使用sharedInstance 类变量来访问单例并在其上执行方法。但是为什么我们不把所有的操作类方法都做成,根本没有变量来处理呢? [SingletonClass uploadFile:(NSFile *)file] 而不是 [[SingletonClass sharedInstance] uploadFile:(NSFile *)file](或 Swift 等价物)。

变量带来什么好处?还是我只是忽略了单例中一些非常完整的概念,没有变量会阻止?

此外,是什么阻止了这个变量被内存释放?我知道它只创建过一次,但为什么它从来没有被删除?

【问题讨论】:

  • 提供一个指向之前提出的问题的链接怎么样?

标签: ios objective-c cocoa-touch singleton swift


【解决方案1】:

如果您需要能够存储状态,您可以创建一个共享实例。如果您可以只使用类方法,那绝对是可取的。您的应用程序中的状态越少,尤其是单例,您创建的错误就越少。

【讨论】:

  • 确实,如果你不共享状态,甚至类函数都不需要——一个简单的函数(在类之外)就可以了。
  • @Grimxn 类方法通常可以很好地分离关注点和可发现性
  • 什么阻止变量在某个时候被释放?
  • @DougSmith,你总是有一个对它有强引用的静态变量。
猜你喜欢
  • 2018-11-25
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多