このコードで静的アナライザーを実行します。
- (id) readForeignPref
{
CFPropertyListRef matchStyle = CFPreferencesCopyAppValue(CFSTR("PBXFindMatchStyle"), CFSTR("com.apple.Xcode"));
return [(id)matchStyle autorelease];
}
次の警告が表示されます。
関数 'CFPreferencesCopyAppValue' への呼び出しは、+1 保持カウント (所有参照) を持つ Core Foundation オブジェクトを返します。Core Foundation オブジェクトは、自動的にガベージ コレクションされません。
これは、そのような醜いもので修正する必要がある警告ですか:
- (id) readForeignPref
{
CFPropertyListRef matchStyle = CFPreferencesCopyAppValue(CFSTR("PBXFindMatchStyle"), CFSTR("com.apple.Xcode"));
id nsMatchStyle = [(id)matchStyle copy];
if (matchStyle) {
CFRelease(matchStyle);
}
return [nsMatchStyle autorelease];
}
それとも、コピーされたオブジェクトが無料でブリッジされていることを考えると、これは単なる誤検知ですか?