2013-10-10 51 views
0

在哪種情況下我應該使用autoreleased變量? 和方法是從以下最佳..何時使用自動釋放變量?

  1. 使用obj= [[_className alloc]init]autorelease],

  2. obj = [[_className alloc]init]和釋放作爲[obj release]

    請幫助OBJ。

另外我應該使用什麼,當我想要創建和使用循環控制結構如下所示的alocal對象。 。

for(int i = 0;i<10;i++) 
{ 
    _className obj = [[_className alloc]init];//Should I use autorelease here? 

     . 
     . // Use this obj.. 
     . 
    [obj release];//If autoreleased is not used... 
} 

我應該從列出的選項中使用什麼? 哪個應該更好和優化?

+3

你應該轉移到'ARC',因爲那時你不需要發佈任何東西。 – rckoenes

回答

2

最好的方法是使用ARC,而不必擔心它。

但是,如果你不使用ARC,我通常在大多數情況下更喜歡情況2。問題是當前的自動釋放池何時會被耗盡。如果有一個循環有很多工作,或者我處於一個不瞭解上下文的庫中,它會運行,我可以控制何時釋放該對象而不是自動釋放,並且它將在未來某個未知時間發生。我可以爲循環創建自己的autorelease池,但我更喜歡顯式發佈。

我看到情況1使用的地方是當一個對象分配給一個屬性,所以它將是一個使用autorelease而不是分配,分配到屬性,釋放的行語句。

有沒有理由不使用ARC?

0

如果你不使用ARC,那麼很快我會說,當你不知道你的變量的範圍時使用autorelease。當你知道變量的範圍時使用釋放。