我已經看到了這個特定的實施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