当我在 Objective C 中使用单例设计模式时,我发现很多人使用下面的代码来创建它。
@interface Base : NSObject {}
+(id)instance;
@end
@implementation Base
+(id) instance
{
static id theInstance = nil;
if (theInstance == nil)
{
theInstance = [[self alloc] init];
}
return theInstance;
}
@end
在这里,我没有明白为什么我们必须在方法中将静态变量分配给 nil,而是可以在方法外部声明并分配给 nil。因为每次调用 +instance() 方法时,Instance 变量都会被赋值为 nil。它不会丢失它之前指向的对象吗?
我试过调试它,令人惊讶的是,当调用 +instance() 方法时它不会指向 nil。谁能解释一下这里发生了什么?