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);


重要: あなたは、Core Foundation オブジェクトを直接 (例えば、free を呼び出すことによって) 割り当てを決して解除してはいけません。オブジェクトの処理が終了したら、CFRelease 関数を呼び出すと、Core Foundation が適切に廃棄します。


オブジェクト参照のコピー


オブジェクトをコピーすると、元のオブジェクトの参照カウントには関係なく、結果のオブジェクトの参照カウントは 1 になります。オブジェクトのコピーの詳細については、Copy 関数 を参照してください。


オブジェクト保持カウントの決定


Core Foundation オブジェクトの現在の参照カウントを知りたい場合は、そのオブジェクトへの参照を CFGetRetainCount 関数のパラメータとして渡します。


CFIndex count = CFGetRetainCount(myString);


ただし、通常、デバッグ時を除いて、Core Foundation オブジェクトの参照カウントを決定する必要はほとんどありません。オブジェクトの保持カウントを知る必要がある場合は、所有権ポリシーの規則を正しく遵守していることを確認してください (所有権ポリシー を参照の事)。


前の章 次の章



目次
Xcode の新機能

  • 序文
  • この文書の構成
    以下も見よ
  • アロケータ
  • 所有権ポリシー
  • 基礎
    命名規則
    作成規則
    取得規則
    インスタンス変数と渡すパラメータ
    所有権の例
  • Core Foundation オブジェクトの寿命管理
  • オブジェクト参照の保持
    オブジェクト参照の解放
    オブジェクト参照のコピー
    オブジェクト保持カウントの決定
  • Copy 関数
  • 浅いコピー
    深いコピー
  • バイト順
  • 作成関数でのアロケータの使用
  • アロケータコンテキストの使用
  • カスタムアロケータの作成
  • アロケータ呼び出し関数の実装
  • バイトスワップ
  • 整数のバイトスワップ
    浮動小数点値のバイトスワップ
  • 文書改訂履歴












  • トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)