我已经看到了这个特定的实施Singleton模式随处可见:Singleton模式实现
+ (CargoBay *)sharedManager {
static CargoBay *_sharedManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedManager = [[CargoBay alloc] init];
});
return _sharedManager;
}
,它似乎被接纳为好的做法(这其中尤其是从CargoBay)。
我不明白的唯一部分是第一行static CargoBay *_sharedManager = nil;
。
为什么你将static
变量设置为nil
?
很好,谢谢你的回答。但是,为什么静态? – Francesco
@Francesco你是什么意思? – 2012-09-22 15:43:46
通过声明共享实例'static',我们将其生命周期延长到整个应用程序的生命周期,对吧? Singleton模式的要点是有一个共享实例,可以在我们的应用程序的任何地方使用,但是为什么我们每次调用该方法时都会创建一个新实例? – Francesco