XCode3.2のXCode静的コードアナライザーで問題が発生しました。それは私が見つけた潜在的なリークが正当化されていないことを示しています。他の人に確認して、それが本当に誤検知であることを確認したいだけです。
メインコードは次のとおりです(一部の関数本体):
NSError *error = nil;
NSData *urlData = /* ... */;
NSXMLDocument *doc = [[NSXMLDocument alloc] initWithData:urlData options:0 error:&error];
if (![self validateObject:doc withError:error]) {
return;
}
// ...
[doc release];
上記のvalidateメソッドは次のとおりです。
- (BOOL)validateObject:(id)object withError:(NSError *)error {
if (!object) {
// do something meaningful...
return NO;
} else {
return YES;
}
}
XCodeは、validateメソッドがNOを返す可能性があり、リリースがdocに送信されないため、docの割り当てがリークの可能性があることを示しています。しかし実際のところ、初期化が失敗した場合、initWithData:options:によってnilが返され、害は発生しません。ドキュメントにもこれが記載されています。
それで、専門家は何と言いますか?誤検知かどうか?
最高、ハラルド