1

次のアドレス帳コードでこの問題が発生しています (うまく機能しますが、間違いなくリークします)。

ABMultiValueRef email = ABRecordCopyValue(person, property);
NSString *type = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(email, 0));
self.textEmail.text = type;
CFRelease(email);

CFRelease(email) ステートメントで 1 つのリークを既に修正しましたが、この問題は修正できません。

ここに画像の説明を入力

これは ARC プロジェクトであり、CFRelease((CFTypeRef) type) が許可されていないため、[type release] を呼び出すことができません。ブリッジされたインスタンスを解放するにはどうすればよいですか?

4

2 に答える 2

7

__bridgeを__bridge_transferに変更します。これにより、タイプが参照の所有者になり、スコープの最後で自動的に解放されます。

于 2012-12-18T07:09:44.650 に答える
2

CFRelease(email); の代わりに、このメソッドを追加するだけです。

if (電子メール) { CFRelease(電子メール); }

于 2014-09-22T10:18:10.197 に答える