2012-01-06 56 views
3

我只是花了很多時間來調試一個愚蠢的錯誤,(釋放一個我沒有分配的變量),並想知道是否有辦法讓XCode的分析下一次警告我。代碼是這樣的:內存管理 - 早期發現錯誤

@synthesize alfa, beta; 
… 
NSString *temp1 = [[NSString alloc] initWithString:@"AlfaText]; 
self.alfa = temp1; 
[temp1 release]; 

NSString *temp2 = @"BetaText"; 
self.beta = temp2; 
[temp2 release] 

最後的聲明是(顯然是?)的錯誤。當你的發佈太少時,分析似乎做得很好,而且太多的分析似乎也是可以分析的。有什麼可以打開,我失蹤?

+0

是的,最後一條語句是一個錯誤,但它不會破壞任何東西。字符串常量的保留計數爲「INT_MAX」,並且它們的「-retain」,「-release」和「-autorelease」消息被覆蓋爲空操作。 – 2012-01-06 15:23:08

+0

但如果temp2是NSArray,而不是NSString,那麼它可能會中斷,對吧? – Andrew 2012-01-06 15:26:42

回答

3

如果靜態分析儀沒有發現,請提交錯誤。它真的應該有。

如果轉換項目中使用ARC,既缺乏寫作的保留/釋放所有由編譯器進行更好的分析相結合會導致很多更少的內存管理錯誤。