2012-02-17 41 views
0

我有一個關於objective-c的簡單問題。當一個屬性沒有被alloc + init'ed調用setter/getter時會發生什麼?

我已經被教導要通過合成它們然後以下面的方式重寫getter來延遲實例化我的屬性。

-(SomeClass *)someProperty { 
    if (!_someProperty) 
     _someProperty = [[SomeClass alloc] init ] 
    return _someProperty 
} 

當我不這樣做時會發生什麼?我問這是因爲我有這樣的屬性沒有分配&實例化,他們似乎(也許不)表現得很好。

我唯一的猜測是,如果一個屬性未分配&實例化它將被保留爲零;在這種情況下,消息傳遞零將無能爲力。它是否正確?

在此先感謝您的幫助!

回答

0

實例變量自動設置爲nil(或0基本類型),所以你不必擔心將消息發送給未初始化的屬性。

0

嗯,是的,如果你試圖發送消息到零,沒有什麼事情會發生。這是分配並初始化它的要點。分配只是給財產一個記憶的地方。

相關問題