2010-06-07 168 views
8

使用構建和XCode中的分析,我看到我在我的代碼中的內存泄漏:對象的潛在泄漏分配

- (NSString *) doIt 
{ 
    NSString *var = [[NSString alloc] init]; 

    return var; 
} 

當然,這是我的問題的簡化片斷

在哪裏我釋放對象?

回答

18

這是autorelease的完美情況。

return [var autorelease];將返回該對象的當前保留計數爲1,並在將來的某個時刻遞減該對象的保留計數,之後調用代碼應保留該對象(如果需要的話)。

+1

確定性 - 噹噹前自動釋放池被耗盡時,對象將被釋放。這通常不重要,因爲對象不再是你的責任,只要你不是自己創建一個池,它就保證不會在你的方法期間。 – Chuck 2010-06-07 21:49:20

+0

這是糟糕的詞選擇。我認爲OP的對象將進入默認的自動釋放池,因此,他將無法控制它何時發佈。以上更正。 – warrenm 2010-06-08 01:28:44

+0

與ARC正確嗎? – UserDev 2013-11-26 09:15:22