| プログラミング種別 |
オブジェクト指向 |
| 大文字小文字の区別 |
あり |
| コメント行 |
// または /* ... */ |
| 主な利用用途 |
Mac OS X プログラミング iPhone アプリ プログラミング |
| 拡張子 |
ヘッダーファイル *.h 実装ファイル *.m (C 言語) 実装ファイル *.mm (C++ 言語) |
Objective-C は、Mac OS X 標準の開発言語であり、C 言語にオブジェクト指向の考えを実装したプログラム言語になります。
同様に C 言語にオブジェクト指向をプラスした C++ という言語もありますが、C++ と Objective-C
とではコードの雰囲気にずいぶんと違いがあります。また、通常、実装ファイルの拡張子は "*.m" になりますが、それを "*.mm"
にすることにより、C++ 言語と Objective-C とを共存させることもできるようになっています。
Objective-C
言語は、コンパイル時には厳密な型チェックやメソッドの存在確認が行われません。
そのため、柔軟な記載ができる反面、実行時になってから思わぬ動作不良を起こすこともあります。たとえば、実行時に存在しないメソッドを呼び出すと、エラーとなってアプリケーションが終了するため、その辺りに注意してコーディングを行うようにします。
この辺りは Xcode 4 で、コンパイラを LLVM に変更することで丁寧な構文チェックが行われたり、"Static Analyzer"
を有効にすることでリアルタイムにコード解析が行われるなど、コンパイラの支援によってもはや気にならなくなってきました。
このように、コンパイラによって柔軟さ故のミスが発見できるようになったことで、むしろ Objective-C
言語の持つ柔軟さが、プログラミングの効率化や、強力な利点につながることが多くなった気がします。
なお、iPhone アプリの開発にも、この Objective-C 言語が利用されます。
iPhone アプリの場合には、ガーベージコレクションによる確保したオブジェクトの自動解放が行われないため、Xcode 4.2 以前までは、適宜
"retain" や "release", "autorelease" 等を用いて、不要になったメモリーを正しく解放させる必要がありました。
しかし Xcode 4.2 以降では、ARC (Automatic Reference Counting)
を有効にすることで、これら "retain" や "release" 等によるメモリー管理をコンパイラに任せることができます。
これにより、プログラマーにかかるメモリー管理の負担やミスを大幅に軽減するだけでなく、nil オブジェクトのメソッド呼び出し等が無視される
Objective-C の特徴と相まって、かなりスリムなコーディングができるようになったように感じます。