7
Xcode 4靜態分析器將此方法標記爲具有過度釋放的返回值,但似乎並非如此。Xcode靜態分析器和copyWithZone
- (id)copyWithZone:(NSZone *)zone
{
return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}
有從返回關鍵字來表達下列它指向的箭頭,另一個從該表達式到分析器警告。下面是靜態分析:
- 方法返回一個Objective-C對象與1擋計數
- 對象發送消息-autorelease
- 對象返回給呼叫者作爲擁有參考(單保留計數轉移到來電者)
- 對象返回了具有+0(非所有對來電者)保留計數+0
- 對象挽留計數恢復至呼叫者其中+1(擁有)保留計數預計
靜態分析器是不正確的還是這個代碼有問題?
通過請求,-initWithURL:postString:
方法:
- (id)initWithURL:(NSURL *)u postString:(NSString *)p
{
if ((self = [super init]))
{
self.url = u;
self.postString = p;
}
return self;
}
我繼續即使在清潔和重建項目後得到這個警告。
更新: Xcode靜態分析器在升級到Xcode 4.2後不再將其標記爲問題。
嗯......你還可以發佈你的initWithURL:postString:方法嗎? – spacehunt
@spacehunt:我更新了問題。 – titaniumdecoy
@Jason:我剛剛使用上面的方法創建了一個新類,我不能用Xcode 4.0.2複製它。當你點擊「2.對象發送自動釋放」分析時,哪個箭頭被突出顯示? – spacehunt