問題這裏有一個內存管理問題的問題。有關subview保留superview在目標C
說,我有一個觀點A,它有一個指針指向其子視圖B.我用@property(nonatomic, retain)
引用視圖B.
現在子視圖B,我需要一個指針指向回它的父答:所以我用另一個@property(nonatomic, retain)
指代它的超級視圖A.
這是我的關注,我讀了一篇文章Hold Me, Use Me, Free Me關於保留和釋放目標c的東西。它提到「保留週期」。所以它說,一個子視圖不需要保留它的超級視圖,實際上如果這樣做是多餘的。這是否意味着在我的例子中,子視圖B只需要使用@property(nonatomic)
參照其超級視圖A?謝謝!
順便說一句,如果我沒有在@property中寫視圖A的保留,我需要在dealloc方法中使用[viewA release]
嗎?
那麼,如果視圖A是一個UIViewController類(UIResponder-> NSObject的子類)呢?我試圖添加一個子視圖,這是一個UIImageView(UIView的子類)。所以當我在子視圖類中使用self.superview時,它沒有給我UIViewController類(我想要的),但給了我UIViewController.view。所以我怎麼能得到UIViewController類。 (實際上它是UIImageView的UIViewController.view類的addSubview,而不是UIViewController類本身,所以在subView類中,self.superView沒有指向UIViewController類) – sbs 2010-10-19 02:31:20
確切地說:視圖控制器本身不是自己的一種觀點,而是支配一種觀點。一個觀點是通過設計無視其控制器。它與控制器的通信由響應者鏈調節:用戶交互將應答者鏈起泡,直到遇到處理者。你可以使用' - [UIResponder nextResponder]'來自己走這條鏈。由於視圖控制器擁有其受控視圖,因此您仍然需要警惕導致保留週期 - 您仍然不希望子視圖保留其超級視圖的控制器。 – 2010-10-19 03:33:28