我有UINavigationController控制幾個視圖。其中一個觀點是由20個可滾動頁面組成。每個頁面都是通過添加按鈕,標籤,UIImageView等等,從UIViews實時構建的。當此UIView彈出堆棧時,內存使用率保持不變。因此,如果我繼續推動/彈出這種觀點,它會不斷上升。內存使用不會丟失 - 沒有泄漏雖然
在我的dealloc,我通過所有20頁遍歷並尋找每個類型的通過得到了增加addSubview對象,然後做,但儀器釋放說我的內存使用量不降!我試圖使用'retainCount'來查看我釋放的對象是什麼,但我可能沒有通過retainCount獲得真實的圖片。對於一些元素retainCount顯示2,所以我試圖釋放該對象兩次,但然後應用程序崩潰。如果我釋放一次它的工作,但內存使用永遠不會下降:(
Q1:我是否需要遍歷查找每個元素,然後對該元素髮布?爲什麼我不能釋放一個父對象和所有對象通過它包含了會得到自動釋放
Q2:是否retainCount的可靠指標
進一步調試。這是我到目前爲止發現的。我有一個UIScrollView,我添加了20個UIViews對象。相同的20個UIViews被添加到NSMutableArray。儀器告訴我,當視圖出現時,20個UIView中的每一個都保持懸掛。好吧,我雖然一定忘了從某個地方'釋放'它,所以保持數量必須增加。我發現確實有一個地方。 那麼就行 [self.scrollView addObject:page]; // page is a UIView I added [page release]; 但是現在釋放NSMutableArray後,當我釋放self.scrollView應用程序崩潰。 – climbon 2010-04-20 04:16:04
NSZombieEnabled後,我看到這個錯誤 *** - [CFString字符串發佈]:消息發送到釋放實例0x3ea6f00 找到NSStackLoggingNoCompact = 1,將有助於以某種方式看到使用「信息的malloc歷史0x3ea6f00與地址在崩潰相關的變量' 這樣做後,我看到一個堆棧跟蹤指向我的目標視圖中的一行,我分配一個NSMutableArray。我將這個數組傳遞給被彈出的視圖。我想可能是我只需要'保留'被傳遞的數組,但沒有幫助。應用程序繼續崩潰並指向同一行。我從來沒有被卡住這麼糟糕:( – climbon 2010-04-20 04:21:18