* 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()を明示する必要はありません。
-kclib1のときはclose()を呼び出す必要がありましたが、デストラクタが代用するようになったので、もうclose()を明示する必要はありません。
* こめんと欄
#comment