質問

このコード片に静的アナライザを実行

- (id) readForeignPref
{
 CFPropertyListRef matchStyle = CFPreferencesCopyAppValue(CFSTR("PBXFindMatchStyle"), CFSTR("com.apple.Xcode"));
 return [(id)matchStyle autorelease];
}

は次の警告を生成します:

  

通話機能への「CFPreferencesCopyAppValueは」+1とCore Foundationのオブジェクトは、カウント(参照を所有している)を保持返します。 Core Foundationのオブジェクトが自動的にごみ収集されません。

これは私がそのような醜いのsomethinを修正する必要があります警告しています

- (id) readForeignPref
{
 CFPropertyListRef matchStyle = CFPreferencesCopyAppValue(CFSTR("PBXFindMatchStyle"), CFSTR("com.apple.Xcode"));
 id nsMatchStyle = [(id)matchStyle copy];
 if (matchStyle) {
  CFRelease(matchStyle);
 }
 return [nsMatchStyle autorelease];
}

またはこれは、コピーされたオブジェクトは、フリーダイヤルのブリッジ?

であることを考えると、ちょうど偽陽性であります
役に立ちましたか?

解決

これを試してみてください

- (id) readForeignPref
{
      CFPropertyListRef matchStyle = CFPreferencesCopyAppValue(CFSTR("PBXFindMatchStyle"), CFSTR("com.apple.Xcode"));
      return [(id)CFMakeCollectable(matchStyle) autorelease];
}
CFMakeCollectableはにObjCのCFRetainよりも異なるため、

-retainないが、これは、GCに漏れます。そのオブジェクトのCFRetain無効ガベージコレクション、およびそれを有効にするCFMakeCollectableを必要とします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top