2013/06/15

[obc]ARCは参照カウンタのことでよいらしい

こういうメモリ関係は、早めに把握しておいた方がよかろう。

自動参照カウント(Automatic Reference Counting)、とある。
「コンパイラがオブジェクトの存続期間を推論します」と、なんかすごそうなことが書かれている。
もう1つ、非自動参照カウント(Manual Reference Counting)もある。
そして、ガーベッジコレクションはiOSにはないとのこと。

参照カウントといえば、C++のshared_ptrを想像すると思う。
コンストラクタでカウントアップ、デストラクタでカウントダウン。
アドレス渡しするときにカウントアップ、だっけ。
カウントが0になったら誰からも参照されていないということでメモリ解放。

私のイメージとしては、教室の電気だ。
最初の人が電気をつけて、いろんな人が出たり入ったりする間は付けっぱなしで、誰もいなくなったら消す、と。
あ、これだと相手に渡すってのがないな・・・。


日本語のAppleドキュメントにはそれらしいファイルがなかったのだが、ちょうど「エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド」というPDF本が500円くらいだったので、買って読むことにした。

どうやら、ARCはコンパイラがやってくれるものらしい。
そして・・・やはり照明で参照カウンタの説明をしてる・・・。
みんなイメージは似たようなものらしい。ちょっと安心。

本の中身を説明していっても仕方がないので、ここら辺にしておこう。


ここで、ふと疑問が。

Objective-Cはデフォルトでは基底クラスを持たないクラスを作ることができる、と思ってる。
じゃあ、allocとかは何なのだろう?
C++でいうところの3大自動生成「コンストラクタ、デストラクタ、コピーコンストラクタ」に当たるのだろうか?
あるいは、newみたいな予約語になるのだろうか?

細かいことではあるが、気になるんだよなあ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。