Learn iPhone, iOS, Objective-c, Swift, cocos2dx, Unity and ….?

iOSやAndroid開発でのエラー解決法や便利tipsのメモ

RSS Feed

ARCについて

0 Comments
Posted by Kuro on 2013/01/02

スポンサードリンク

ARCが何かって?Automatic reference counting、略してARC、Objective-Cアプリケーションのメモリ管理を簡単にしてくれる新機能のことだ。何がスゴイかって言うと、どのオブジェクトに何回retainして何回releaseしたかについて、もう思い悩む必要はなくなったんだ。これまではretainした数と同じ数だけreleaseしなくちゃならなかったし、Autoreleaseされるオブジェクトもあったりで、考えただけで頭が痛くなるぜ。

あと、これも知っておいたほうがいい。ARCはガーベッジコレクションとは違うんだ。動作が完全に決められている。つまり、同じプログラムで同じ動作をすれば、ARCも毎回同じ動作をする。それに、ARCはランタイムコンポネントでもない。コンパイラーがretain,release,autoreleaseを自動的に挿入してくれるんだ。ARCには従わなくてはならないルールがいくつかある。以前はメモリリークを避けるために従っていたルールと同様にね。人間がやるとどうしても間違いが起こるが、ARCに任せれば間違えないだけでなく、コードの最適化もしてくれる。

今じゃコンパイラーがめんどうな仕事を肩代わりしてくれるようになったんだ。ソースも短くなって、バグが入り込む余地も減るってわけさ。

Objective-CプログラマーのARCに対する2大懸念事項は、コントロールができなくなるということと、新しい概念を学ばなければならないのではないかということだろう。まったく馬鹿げた話だ。オートマ車とマニュアル車の例を考えてみてくれ。ギアチェンジを諦めたからって、コントロールを失ったって言えるだろうか?確かにそう言えなくはないが、それで失ったものはお前が本当に必要としているものか?何かを新たに学ぶ必要があるか?ないはずだ。いくつかのことを忘れる必要があるだけだ。そして、確実にしなければならないことは減っている。

マニュアル車ではベテランドライバーでもミスをする。それは、releaseやretainの間違いも同様だ。マニュアル車ではギアをいつでも最適化してくれるし、大抵の場合、燃費もいい。ガスの無駄使いはメモリリークみたいなもんだ。

まとめると、ARCはお前からコントロールを奪ったりはしない。お前のアプリに必要なものはすべてこれまで通りコントロールできる。コントロールに関する懸念は、単に心理的な問題や誤解から来るものだ。ARCを使う上で学ばなくてはならないことはあるが、それはプログラマーが日々学ばなくてはならないことに比べれば微々たるものだ。手動でのメモリ管理を学ぶのに比べても遥かに楽だ。とりあえず下の2つのサイトに目を通しておけば問題nothing。
http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html
http://www.learn-cocos2d.com/2011/11/everything-know-about-arc/

by すてふぁん

Learn Cocos2d 2: Game Development for Ios
Steffen Itterheim Andreas Low
Apress
売り上げランキング: 22,020

スポンサードリンク


You can leave a comment, or trackback from your own site.

0 Comments

You can be the first to comment!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

スポンサードリンク

Popular Posts