1

Core Foundation で、CFError ポインターを使用して関数を呼び出した場合、後でそのエラーを解放する責任はありますか? 例えば:

CFErrorRef error = NULL;
BOOL success = ABRecordSetValue(record, property, value, &error);
if (!success) {
    // handle error
    CFRelease(error);
}

これはリリースなしで魔法のように機能することをどこかで読んだことを覚えていると思いますが、それを確認するものは何も見つかりません。

4

1 に答える 1

3

CoreFoundation では、ポインターを使用して何かを取得する場合、...Create()関数のいずれかを使用して割り当てられた可能性が高いため (ドキュメントにはこれについて何も記載されていませんか?)、解放する必要があります。

Foundation では、「返された」値は自動解放されるため、これを行う必要はありません (実際、すべきではありません)。

于 2013-04-23T21:25:15.513 に答える