【发布时间】:2014-03-24 06:33:43
【问题描述】:
下面的代码来自 Big Nerd Ranch iOS 编程书,第 3 版。它是一个类方法,用于检查单例类 BNRItemStore 是否已被实例化。如果有,则返回单例实例,如果没有,则创建它。我不明白的部分是静态变量。我知道静态变量保持状态,但是,不会再次调用该方法将 *sharedStore 重置为零?也就是说,一旦再次调用该方法,这不是一个会删除单例实例创建的赋值吗?
static BNRItemStore *sharedStore = nil;
方法
+(BNRItemStore *)sharedStore
{
static BNRItemStore *sharedStore = nil;
if (!sharedStore)
sharedStore = [[ super allocWithZone:nil ] init ];
return sharedStore;
}
【问题讨论】:
-
这是 C 的
static实现的一个怪异之处:无论静态变量在哪里声明,在声明语句中发生的任何初始化都只执行一次。
标签: ios objective-c