メインメニューを開く

差分

ARCの追加
OPENSTEPライブラリはイベントサイクル単位で、Autorelease poolと呼ばれる暗黙の参照元を持っており、オブジェクトをここに登録することでイベント終了時には自動で解放されるオブジェクトを実現している。
 
GNU版ランタイム及び、Mac向けのApple版ランタイムではガベージコレクションも利用可能だが、iOSに於てはリソースの効率上使用できない。Appleはさらに第三の方式としてARC(Automatic Reference Counting)方式を開発したため、Apple系では今後この方式が主流になる見込みである。
今後は[[ガベージコレクション]]に徐々に移行すると見られている。ただし両方式は一長一短があるという見方が支配的で、今後も併用される可能性が高い。GNU版ランタイムは独自に[[Boehm GC]]を使ったGCモードをすでに実現している。Apple版はMac OS X 10.5でGCを導入した。iPhoneのCocoa touchではリソース制限が厳しいことからGCは使われず、Autorelease方式を採用している。
===== ARC =====
ARCは内部的にはretain/release/autoreleaseと同様のメカニズムで動作するが、コンパイル時にメソッドの命名ルール等を見て自動的にretain/release相当のコードを挿入する方式である。これにより、ARCでは明示的なretain/releaseがそもそも不可能になる。管理周りのコードの削減に加え、autorelease管理の実行効率が向上するため、旧方式のプログラムをARCに切り替えるだけでもパフォーマンスがいくぶん向上する。
 
== Objective-C 2.0 ==
匿名利用者