2011-08-28 25 views
1

Xcode 4的分析功能非常棒。唯一的問題是它認爲你初始化時應該釋放的對象被報告爲內存泄漏。即你如何防止它認爲這是內存泄漏?在Xcode下自行管理/釋放報告爲「潛在物體泄漏」的對象 - >產品 - >分析

@interface BackgroundTaskThing 

+ doBackgroundTask: (NSString*) something { 
    BackgroundTaskThing* b = [[BackgroundTaskThing alloc] init]; 
    [b setSomething: something]; 
    [b runTask]; 
} 

.... 

- (void)taskComplete { 
    [self release]; 
} 

@end 
+0

熊如果你決定遷移你的代碼,那麼釋放這樣的對象將在ARC下破解。 –

回答

3

here,部分控制「的靜態分析診斷」:

#ifndef __clang_analyzer__ 
// Code not to be analyzed 
#endif 

(不,我鼓勵這一點,但它是禁用它單程)記住,自我

+4

這是一種方法。但是,可以提出一個觀點,即該對象通常不應該自行釋放。如果它位於某處的處理隊列中,則該隊列(或隊列中的塊)應該保存該引用。總的來說,這是一個棘手的問題。 – bbum

+0

@bbum +1同意 – justin

+0

這是一個艱難的決定,是否應該這樣做,但我記得當時閱讀了一些蘋果文檔,表明在某些情況下這是一個好習慣。 – Jacob