我終於明白我是否必須釋放一個對象,以及如何在一個簡單的應用程序中保留我的保留數儘可能低(通過知道對象是否返回額外的'保留'已經被調用或不)。所以NARC規則在這方面工作得很好。另一方面,我無法圍繞是否要retain
(通常使用保留屬性)或僅僅是assign
實例變量來包裝我的頭。那裏有什麼經驗法則嗎?我知道只有兩個:超越NARC:什麼時候保留,何時分配,什麼時候複製
- 如果我在我的班級中所做的實例(例如,在一個init),那麼我應該保留它,並在
dealloc
釋放。 - 代表得到分配,不保留
但我不明白的是我是否應該保留我從另一個實例傳遞的東西。我知道風險在於保留數減少到零,而我仍然拿着袋子(或者留下許多額外的袋子和記憶),但是......我應該如何組織我的應用程序以防止這種情況發生?
我見過一些related questions,但沒有一般。
當我在這裏:什麼已添加到UIWindow
或UIView
,我沒有親自保留的東西呢?如果他們的超級視圖從所有超級視圖中刪除,「自然」保留的實例是否會被釋放?
感謝分享,很高興聽到另一個版本的相同的東西,只是爲了更好地理解它。我不擔心保留數量,但是至少在記住它們的時候,很難理解爲什麼我會擔心釋放很多。這是爲了保持較低的保留數=較低的內存佔用。 – 2010-07-19 20:19:37