我正在閱讀一本試圖刷掉Objective-C灰塵的書,並且在閱讀如何實現單例時遇到了這個問題。這是執行,因爲他們有它的書:正確的單例執行
+ (ClassName *)sharedClass {
static ClassName *sharedClass = nil;
if (!sharedClass) {
sharedClass = [[super allocWithZone:nil] init];
return shared store
}
我的問題是,他們爲什麼會設置爲每次方法是跑爲零,然後檢查它是否是零,它現在顯然,和創建一個新的實例?這聽起來像是打敗了單身人士的整個目的,只有一個班級的實例。我注意到有很多與單例實現相關的問題,但沒有涉及這方面的具體問題。相信我,我在發佈前仔細閱讀。
更好地讀取函數中的靜態變量。 – zaph 2015-02-24 00:03:52
由於var聲明爲靜態,所以將其視爲文件級別的變量。 = nil只在最初運行。無論如何,這裏有一個非常好的單身解決方案http://stackoverflow.com/questions/7568935/how-do-i-implement-an-objective-c-singleton-that-is-compatible-with-arc – danh 2015-02-24 00:04:09
@Zaph Do當你將它們設置爲零時,它們不會設置爲零? – John 2015-02-24 00:34:05