2010-09-24 54 views
0

想象我有一個主視圖,在我所到的「AddSubview」方法的調用,像這樣:問題上iphone

[mainView addsubview:secondView]; 

...在這第二種觀點,我有一個searchBar,用適當的代碼來顯示UI鍵盤,輸入一些文本,在應用程序中使用它,最後關閉UI鍵盤。 好的。

當程序的這一部分完成後,我所說的「AddSubview」方法中的第二時間,如下所示:

[secondView removeFromSuperview]; 
[mainView addsubview:thirdView]; 

當這樣做時,第二視圖中消失,並且通過所述第三取代一。 但... 第二個視圖使用的內存未被釋放。 而且,更重要的是,UIKeyboard(大約800 Ko)使用的內存在我退出應用程序之前不會被釋放,並且即使在我用第三個視圖替換第二個視圖時仍保持活動狀態。

那麼,有沒有辦法正確釋放UI鍵盤使用的內存? (精度:在上面的代碼中,3個UIviews都被分成了3個名爲ManView,SecondView和ThirdView的類文件,它們分別對應於NIB文件中的3個UIviews對象。在每個文件中,但是,顯然,它從來沒有被調用...)

回答

0

由於KiranThorat指出,addSubview保留看法,所以一定要自己動手正確地釋放。確保你的視圖在dealloc方法中發佈任何子視圖。

另外,當檢查模擬器上的泄漏時,我發現看到一些UIKeyboard泄漏是正常的。這些不在設備上(至少在我的情況下)。

1

你是如何創建第二個視圖.. 當你添加subView它保留,當你刪除它釋放它自我。

當您創建secondView時,請嘗試使用Autorelease。 或 從超級視圖中移除後釋放secondView ....在釋放視圖之前檢查視圖是否爲零。所以 如果它被釋放它不會崩潰的應用程序。