kbcl0のページ#3

  • (by K,2019.04.28)

(6) KAutoreleasePool

  • [1] KAutoreleasePoolは、もとはといえばObjective-CのAutoreleasePoolの真似をして作ったものですが、本家とは異なりリンクカウントなどの機能は持っていません。
  • 単純に「後でまとめてfreeする」ものを登録しておいて、後でまとめて一気にfreeできるだけです。
  • 登録する際にはデストラクタも登録できます。デストラクタが指定されていると、free直前にデストラクタを呼ぶようになります。
  • [2] kbcl0でのKAutoreleasePoolの使い方は以下の通りです。
    {
        KAutoreleasePool ap;
        ....
    }
  • このように任意のスコープの冒頭にローカル変数としてKAutoreleasePool型のオブジェクトを宣言しておけば、以降のkautoreleasePool->alloc()はすべてこのapに登録されます。
  • そしてスコープから抜ける時にすべてfreeされることになります。
  • kclib1のときはclose()を呼び出す必要がありましたが、デストラクタが代用するようになったので、もうclose()を明示する必要はありません。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-28 (日) 22:03:13 (117d)