2013-02-21 108 views
1

通過將字符串分配給類B中的字符串屬性(類型爲retain),我在兩個類之間傳遞了幾個對象,稱爲從A到B的字符串。我需要在dealloc方法中的B類中釋放這個字符串屬性嗎?在Obj中的對象之間傳遞對象C

+3

你使用ARC嗎? – 2013-02-21 08:44:15

+0

是的,你必須在非ARC。你應該考慮使用複製而不是保留字符串,在這種情況下你仍然必須釋放它。 – 2013-02-21 08:44:29

回答

1

正如您在談論dealloc,我將您的問題視爲非ARC。

將字符串賦值給類B中的字符串屬性,其類型爲 類型爲retain。我是否必須在B類中釋放此字符串屬性

否。

只有在確實保留,複製,分配時才需要釋放。

此外,NSString應分配不保留。

+1

保留或分配屬性取決於他的任務。 – zakhej 2013-02-21 08:58:11

+0

如果我在後面的代碼中根本不使用該屬性,則取決於運行時條件,以便該屬性將爲零直到結束......如果在釋放dealloc中的某些內容之前應檢查屬性是否爲零? – 2013-02-21 09:13:20

+0

,因爲你正在分配,所以需要擔心泄漏。 – 2013-02-21 09:15:43

0

是的,你需要釋放保留的對象。在dealloc方法:

- (void)dealloc 
{ 
    if (_yourString) 
    { 
     [_yourString release]; 
    } 

    ... 

    [super dealloc]; 
} 
2

如果屬性類型爲保留,比將增加1保留計數,並釋放你需要減少其保留計數爲0 所以,如果你不會釋放對象它會導致內存泄漏。 感染這是保留財產的目的,它賦予該類實施財產的所有權。

+0

當我們不確定源是否保留對象時,我們使用retain屬性。 – 2013-02-21 08:57:07