0
我有一個真正的痛苦,試圖找出爲什麼KVO保留所有正在觀察的值。爲什麼KVO保留所有NSMutableArray的對象?
場景:我有一個弱引用的NSMutableArray。 (使用CFArrayCreateMutable和Callback對於retain和release都設置爲NULL)。意味着添加的任何對象都不會被保留/釋放。
我有一個NSArrayController觀察NSMutableArray的值。
但是現在,NSMutableArray的每個對象都被保留下來了。爲什麼會發生這種情況,我該如何解決這個問題?
@大衛,對,我記得[你的問題關於自動添加/從數組中刪除對象](http://stackoverflow.com/q/5972808/643383)。你可能沒有看看'-retainCount',但你仍然指望在特定的時間調用'-dealloc',並且你正在假設其他對象的行爲。任何時候,當你嘗試做「補償KVO」時,你就錯了,並且犯了更多的錯誤。 ;-)另外,請注意,如果一個對象位於可變數組中,則不應調用「-dealloc」,因爲數組本身將保留該對象。我相信你知道這一點。 – Caleb
@David,從技術上說,泄漏是不同的:這是一塊永遠無法釋放的內存塊,因爲沒有人提及它。你得到的更像是一個保留週期,除了它不是一個真正的循環,只是一個意想不到的保留,它正在阻礙你。我想我很欣賞你想要做的事情的聰明,但同時也是你對導致問題的其他物體的假設。假設你使用DDAutozeroingArray,簡短的答案可能是它不支持KVO。 – Caleb