2014-08-27 46 views
1

我在做什麼是我在後臺創建大量的UIView,並將它們保存在NSMutableArray中以備後用。但是,當我關閉視圖控制器時,我檢查Xcode中的內存,似乎有些內存沒有被釋放。我檢查了;視圖控制器正在被釋放。內存不被釋放,甚至解僱視圖控制器後調用dealloc方法

檢查請: enter image description here

這happend幾個顯示和解聘視圖控制器之後。其中一些正在發佈,但並非全部。 謝謝。

+0

你在項目中啓用了殭屍嗎? – Yogendra 2014-08-27 08:03:41

+0

是的,它已啓用。 @Student – 2014-08-27 08:04:55

回答

5

取消選中Edit Plan下的Enable Zombie Objects選項。然後再試一次。

殭屍是已釋放的對象,而是將其引用仍然存在和消息仍然被髮送給它

我認爲這個鏈接對你 What is NSZombie?

+0

哇!謝謝。我不知道。 – 2014-08-27 08:08:55

+0

我會的。它不允許我很快接受。 :) – 2014-08-27 08:11:25

0

更多信息在dealloc方法釋放數組中的所有視圖。

叫下面的方法在您的控制器dealloc方法

- (void)releaseViewArray 
{ 
// Releasing views in the array 
    for (UIView *view in _viewArray) { 
     [view release]; 
    } 
// Releasing the array that holding the views 
    [_viewArray release]; 
} 
+0

這不適用於ARC – GoodSp33d 2014-08-27 09:05:11

+0

我知道隊友 – Anuj 2014-08-27 09:13:14

1

我想你使用的弧線,所以它可能是對的dealloc明確釋放這個有用。

-(void)dealloc { 
    for(UIView *vw in self.arrayOfViews) { 
     vw = nil; 
    } 
    self.arrayOfViews = nil; 
} 

使用dealloc有點像舊時代(弧前),但它會幫助您更好地管理內存。 !重要! - >在使用arc時不要致電[super dealloc];

相關問題