2
有些東西我沒有在Apple文檔中找到。下面是來自摘錄 - UIViewController類的(無效)viewDidUnload:爲什麼要設置爲零並釋放UIViewController的屬性?
您的dealloc方法應該釋放 每個對象,但還應該設置 引用該對象零 之前調用超。
如果使用保留和代碼中的XXX屬性的synthetize,爲什麼大多數的蘋果的例子做了一套對零在viewDidUnload:
self.xxx = nil;
但recommands做兩件事一組到零,釋放在的dealloc:
[xxx release];
self.xxx = nil;
爲什麼設定到零不夠的dealloc的?
PS:我知道我的問題是非常相似,這一個"Why release a property that you've already set to nil?"但它是不完全一樣
感謝您的回答。這是否意味着如果100%確定在setter方法中沒有副作用(例如當合成的方法沒有被覆蓋時),我們可以使用self.xxx = nil作爲釋放內存的唯一調用? – 2011-04-20 14:48:50
我們可以,但是仍有很小的機會,setter實現將在未來發生變化並引入副作用......但在大多數情況下,self.xxx = nil應該可以正常工作 – Vladimir 2011-04-20 14:55:30
非常感謝弗拉基米爾! – 2011-04-20 21:45:32