Objective-C

久しぶりに技術ねたです。
最近Macでプログラミングしたいなとふと思ってObjective-Cの勉強をはじめました。
Objective-CC言語オブジェクト指向の拡張をした言語で今はMacでしか使われていないようです。
同じような言語でC++というのがありますが、根本的な考え方が全く違う言語です。


Objective-Cで哲学を感じた点はこんな感じです。


1 メッセージパッシングが基本
 Objective-Cではオブジェクトにメッセージを送ることによってプログラムします。


ns_str = [ [ NSString alloc ] init ];


上の例はNSStringという型のオブジェクトを作成してinitメッセージを送って初期化をしています。

2 言語がシンプル


 C++のように言語に色んな機能をもたせるのではなく、言語はシンプルにしてクラスに機能を組み込むようにしています。
なので言語自体はC言語を知っている人であれば2-3時間くらいで理解できると思います。
(C++だとそうはいかないですね。)


3 メモリー管理


 Javaスクリプト言語などではメモリーの確保、廃棄はガーベージコレクションという機能で自動でやってくれます。
しかしObjective-CC言語の拡張なので自分でメモリー管理をしなければいけません。
ただしC言語よりも便利な機能がObjective-Cにはあります。
確保したメモリーに参照カウンターをつけて参照しているオブジェクトがなくなるとメモリーを解放するしくみが組み込まれています。


NSString *nsstr = [NSString stringWithFormat:@"%d",abc];

NSString *foo = nsstr;

[nsstr retain];

 上の例ではnsstrという文字列がfooに参照されているのでretainというメッセージをnsstrに送るとnsstrの参照カウンタが+1されます。
参照カウンタを-1するためにはreleaseメッセージを呼びます。
そしてカウンターが0になった時点で自動的にメモリーが解放されます。
自分でメモリー管理をするのが面倒な場合は自動でやってくれるしくみもあります。

Objective-CJavaC++とはまた違った哲学で作られているのでなかなかおもしろいですね。
時間があったらMacのプログラムを何か作ってみようと思います。

Objective-C Mac OS XプログラミングObjective-C Mac OS Xプログラミング
荻原 剛志

ソフトバンククリエイティブ 2006-04-07
売り上げランキング : 14668
おすすめ平均

Amazonで詳しく見る
by G-Tools