Objective-C

Objective-C 2.0

AppleはMac OS X 10.5においてObjective-C 2.0という名称で言語仕様の変更を行った。
ガベージコレクションの導入
世代別の保守的GCを導入し、GC管理下にあるオブジェクトは全てメモリ管理を自動化できる。なお、これに伴いCore FoundationのオブジェクトもGC管理下に置けるようになった。GCモードではマルチスレッド周りの性能が向上するとみられる。
プロパティの導入
C#などに採用されているプロパティが追加された。setter/getterの扱いが大幅に簡略化される。またKey-Value-Codingに関してドット記法が導入され、obj.propNameのようなアクセスができるようになった。メッセージ送信メタファからは逸脱した感もあるが、元々構造体が同じ記法を用いている上、メソッド呼び出しを正確に書くよりもはるかに記述量が減るため、実利主義のObjective-Cらしい拡張と言える。
Fast Enumeration
いわゆるforeach文の導入。
プロトコルの強化
実装オプションのプロトコル定義が増えた。
Class Extensions
実装をオプションにできない無名カテゴリ。実装必須のプライベートメソッドを(インターフェース的に)公開したくない時に用いる。Objective-Cでは動的ディスパッチを行うので、非公開メソッドでも呼び出しに制限がない点に注意。
ランタイム構造の変更
クラスのposingは廃止された。その代わりにメソッドの交換(セレクタのマッピングを入れ替える)が公式に用意され、カテゴリと組み合わせることでほぼ同じ機能を実現できる。その他にも、ランタイム周りはほとんど原形を留めないほどに手が入っている。

戻る