Objective-C 2.0

Leopardから採用されたObjective-C 2.0 (以下, obj-C 2.0)。ガーベージコレクションなど新しい機能が追加されているのですが、なんとなく面倒で今まで敬遠してました。ところが、iPhone SDKでは、ドット記法などのobj-C 2.0の機能が多用されているので、避けて通れない感じになってきました。そこでようやく重い腰をあげて、obj-c 2.0に挑戦!!




  • Fast Enumeration

NSEnumeratorやNSArrayのindexのforループを使う必要がなくなりました!

NSArray* allStrings;

for ( NSString* aString in allStrings ) {
NSLog (aString);
}

こちらの方が便利で高速。しかも安全です。というのも、このforループの中で、NSArrayなどの中身を書き換えるようなメソッドを呼び出すと、例外が発生して知らせてくれます。

  • Garbage Collection

ターゲットのbuild settingの"Objective-C Garbage Collection"の項を "Required"にすると、ガーベージコレクション(GC)が有効になります。GCが有効な場合は、release, retain, autoreleaseなどのメソッドがすべて無効になります。オブジェクトの解放時には, deallocは呼ばれなくなるのですが、かわりにfinalizeが呼ばれるようになります。Javaと同じですね。

CoreFoundation系のクラス(例えば、CGImageRefなど)はGCの中では扱われないということに注意する必要があります。また、malloc(), free()などでアサインしたメモリ領域は自分で管理する必要があります。



この記事は、Theocacao - A Quick Objective-C 2.0 Tutorial (http://theocacao.com/document.page/510)を参考にしました!