Core Foundation オブジェクトの寿命管理
Core Foundation オブジェクトの寿命は、その参照カウント、つまりオブジェクトを持続させたいクライアント数の内部カウントによって決定されます。Core Foundation でオブジェクトを作成またはコピーすると、その参照カウントは 1 に設定されます。後続のクライアントは、参照カウントを増分する CFRetain を呼び出してオブジェクトの所有権を要求できます。後で、オブジェクトを使用する事がなくなったら、CFRelease を呼び出して下さい。参照カウントが 0 になると、オブジェクトのアロケータはオブジェクトのメモリを解除します。
オブジェクト参照を保持する
Core Foundation オブジェクトの参照カウントを増分するには、そのオブジェクトへの参照を CFRetain 関数のパラメータとして渡します。
/* myString is a CFStringRef received from elsewhere */ myString = (CFStringRef)CFRetain(myString);
オブジェクト参照の解放
Core Foundation オブジェクトの参照カウントを減分するには、そのオブジェクトへの参照を CFRelease 関数のパラメータとして渡します。
CFRelease(myString);
オブジェクト参照のコピー
オブジェクトをコピーすると、元のオブジェクトの参照カウントには関係なく、結果のオブジェクトの参照カウントは 1 になります。オブジェクトのコピーの詳細については、Copy 関数 を参照してください。
オブジェクト保持カウントの決定
Core Foundation オブジェクトの現在の参照カウントを知りたい場合は、そのオブジェクトへの参照を CFGetRetainCount 関数のパラメータとして渡します。
CFIndex count = CFGetRetainCount(myString);
ただし、通常、デバッグ時を除いて、Core Foundation オブジェクトの参照カウントを決定する必要はほとんどありません。オブジェクトの保持カウントを知る必要がある場合は、所有権ポリシーの規則を正しく遵守していることを確認してください (所有権ポリシー を参照の事)。
前の章 次の章