我努力以非常乾淨的方式解決涉及內存過載(管理)的問題。 具有視系列包括其它視圖IM,在項目中,我有這樣的情況:iOS設計模式內存管理與委託和父對象
的MainView
| _PageView
| _CustomButton
洙遠遠洙好,易爲一塊蛋糕。由於某種原因,CustomButton中有一個委託(協議),所以我們在PageView中創建了N個CustomButtons,在PageView(PageVew extend CustomButtonDelegate)中將代理設置爲self,並釋放按鈕並將它們附加到像
{
CustomButton *customButton_ = [[CustomButton alloc] initWithFrame:CGRectMake(100.0,50+(i*55.0),200.0);
customButton.delegate = self;
[self addSubView:customButton_];
[customButton_ release];
}
soo far soo good again。按鈕將被按下,PageView獲得協議方法,執行一些代碼並完成。一個問題是,在一個點上,的MainView必須刪除網頁瀏覽,那麼在方法我請
[pageView_ removeFromSuperview];
[pageView release], pageView_ = nil;
pageView_ = [PageView alloc] initWithFrame.....];
和我重新創建與其他數據來顯示該對象。 我注意到PageView永遠不會釋放並從內存中刪除,因爲它的retainCount正是我在PageView中創建的CustomButton的數量,並將它分配給自我加上一個當然。我的問題是,什麼是最乾淨的方式來安全地刪除所有的對象,並能夠刪除PageView,釋放內存(因爲我加載了相當大量的數據顯示在其中)?
現在我做:
創建一個瀏覽量NSMutableArray裏,我的CustomButton對象在 它,和之前刪除網頁瀏覽,我循環,並設置委託=零,然後鬆開每個 對象,我釋放NSMutableArray(稱爲「持有人」)後。
但問題是,如果我想與其他協議添加更多的不同類型的對象,添加到此數組,可能會導致保留對象的其他問題。
我在哪裏缺少傢伙,知識,所以我需要更多的學習(很確定我可以說)還是需要與另一個OOD進行交流?
謝謝你們,即時超負荷與這個問題,我的大腦被困在一個接近的道路。 :)
如何聲明並實現CustomButton類的委託屬性? – murat