2013-11-14 41 views
1

I'm使用ARC,並有強大的屬性:self.property:無內存初始化對象泄露

@property (strong, nonatomic) WebViewController *webViewController; 

我合成它,喜歡它

//since ARC is used, is this ok? 
self.webViewController = [[WebViewController alloc]init]; 

,如果發生了什麼初始化我繼續做下去,例如在applicationDidBecomeActive:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    self.webViewController = [[WebViewController alloc]init]; 
    self.window.rootViewController = self.webViewController; 
} 

I'm以爲這必然導致內存泄漏引起的WebViewController一個新實例創建的每個應用程序被激活的背景時間。我有它的多個實例嗎?或者,如果我「覆蓋」self.webViewController,舊的實例會被刪除/釋放嗎?

回答

4

當您覆蓋該屬性的值時,前一個將被釋放:在內部,其保留計數減1。如果在其他地方沒有更強的引用,則它會被釋放。

+0

所以它可能會導致內存泄漏,如果這是其他地方的引用,我希望我可以在我的問題後清晰,但我怎麼知道當我覆蓋屬性時,保留計數設置爲0。 – dan

+0

我不知道這是否是一個樣本科爾U寫或不是,但是,以防萬一你不需要設置applicationDidBecomeActive根控制器,也不必分配它,U應該知道你的代碼中的強引用R在哪裏 – AntonijoDev

+0

@丹不要求保留數。這不是一個好的做法,保留點比這更復雜。考慮自動釋放的對象。如果你想知道對象是否被釋放,只需創建一個dealloc方法來設置一個斷點。 – Gabriel