我正在阅读一本试图刷掉Objective-C灰尘的书,并且在阅读如何实现单例时遇到了这个问题。这是执行,因为他们有它的书:正确的单例执行
+ (ClassName *)sharedClass {
static ClassName *sharedClass = nil;
if (!sharedClass) {
sharedClass = [[super allocWithZone:nil] init];
return shared store
}
我的问题是,他们为什么会设置为每次方法是跑为零,然后检查它是否是零,它现在显然,和创建一个新的实例?这听起来像是打败了单身人士的整个目的,只有一个班级的实例。我注意到有很多与单例实现相关的问题,但没有涉及这方面的具体问题。相信我,我在发布前仔细阅读。
更好地读取函数中的静态变量。 – zaph 2015-02-24 00:03:52
由于var声明为静态,所以将其视为文件级别的变量。 = nil只在最初运行。无论如何,这里有一个非常好的单身解决方案http://stackoverflow.com/questions/7568935/how-do-i-implement-an-objective-c-singleton-that-is-compatible-with-arc – danh 2015-02-24 00:04:09
@Zaph Do当你将它们设置为零时,它们不会设置为零? – John 2015-02-24 00:34:05