Ios 对于Objective-C/Swift单例模型,为什么我们要创建一个共享实例而不仅仅使用类方法?

Ios 对于Objective-C/Swift单例模型,为什么我们要创建一个共享实例而不仅仅使用类方法?,ios,objective-c,cocoa-touch,singleton,swift,Ios,Objective C,Cocoa Touch,Singleton,Swift,似乎我们总是使用sharedInstance类变量来访问Singleton并对其执行方法。但是为什么我们不让所有的操作都成为类方法,而没有一个变量来处理呢[SingletonClass uploadFile:(NSFile*)文件]而不是[[SingletonClass sharedInstance]uploadFile:(NSFile*)文件](或Swift等效文件) 变量带来了什么好处?或者我只是忽略了单例中的一些非常完整的概念,没有变量会阻止这些概念的出现 此外,是什么阻止内存释放此变量?

似乎我们总是使用
sharedInstance
类变量来访问Singleton并对其执行方法。但是为什么我们不让所有的操作都成为类方法,而没有一个变量来处理呢<代码>[SingletonClass uploadFile:(NSFile*)文件]而不是
[[SingletonClass sharedInstance]uploadFile:(NSFile*)文件]
(或Swift等效文件)

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


此外,是什么阻止内存释放此变量?我知道它只创建了一次,但为什么不删除它呢?

如果需要存储状态,您可以创建一个共享实例。如果您可以只使用类方法,那绝对是更好的选择。应用程序中的状态越少,尤其是使用单例时,创建的bug就越少。

事实上,如果不共享状态,甚至不需要类函数——一个简单的函数(在类之外)可以。@Grimxn类方法通常能很好地分离关注点和可发现性,以及是什么阻止变量在某个时候被释放?@DougSmith,您总是有一个静态变量对它有很强的引用。提供一个指向前面提出的问题的链接怎么样?