其大家都很熟悉的常見問題,但我還是不完全理解。父母子女建設保留週期
如果對象A擁有(具有強屬性)對象B,而對象B具有對象A的強屬性,則存在保留週期,並且不會釋放對象並存在內存泄漏。
但是,如果對象A改爲指向對象C而不是對象B,那麼內存中的另一個地址呢?
據我所知,強大的性能做類似如下:
- (void)setObject:(id)newObject{
if (_newObject == newObject){
return; //
}
NSObject *oldObject = _newObject;
_newObject = [newObject retain];
[oldObject release];
}
那麼,如果我們點而不是爲對象C,是不是在這種情況下內存對象B將被釋放?如果兩個對象(A和B)將相反設置nil
對象,該怎麼辦?內存泄漏是否還會有保留週期?在舊的價值「浮動」在內存的某個地方?
我知道,這已經討論過很多次了,但我仍然無法在我的腦海中看到「全貌」。我很感謝在這方面的任何澄清。
分配工具有助於輔助週期檢測的工具。我建議你探索一下這些工具。如果你想編寫示例代碼來玩,創建你自己的NSObject子類,這樣你就不會遇到靜態實例(比如@「foo」)或標籤指針。 – bbum