我有一個用於存儲其他類的實例對象的類。這個類有以下類方法被稱爲每當我需要得到的類本身(和存儲其他類的實例,其方法是對數據結構進行操作的數據結構):Objective C中的靜態初始化C
+ (instancetype)sharedStore
{
static BNRItemStore *sharedStore = nil;
//Do I need to create a sharedStore?
if (!sharedStore) {
sharedStore = [[self alloc] initPrivate];
}
return sharedStore;
}
的static BNRItemStore *sharedStore = nil;
行對我來說非常混亂。第一次調用類方法時,我們聲明static BNRItemStore *sharedStore
並將其設置爲nil
。我不明白爲什麼如果我們第二次調用該方法,sharedStore
不會被覆蓋和/或釋放。顯然,這種情況從未發生過,所有後續調用+ (instancetype)sharedStore()
方法似乎都完全忽略了static BNRItemStore *sharedStore = nil;
這一行。這是爲什麼?
這是因爲四十年的靜態變量規則。初始化發生_once_。 – gnasher729