C言語との比較
Objective-CはANSI-C互換のC言語らしいんですけど。 どうも別の言語と思えるくらい書き方が異なっています。 実際C言語やC++を経験している私でさえもさっぱりという感じがいなめません。また、 オブジェクト指向言語になるととたんに呼び名がかわったりします。そのあたりも交えてC言語とObjective-Cの違いを比べてみたいと思います。Objective-C | C言語 |
@~ | C言語のキーワードには@(アットマー ク)で始まるものはありません。これはC言語との競合をさけるものだそうです。 |
インスタンス | C言語ではインスタンスと呼ばれるものはありません。あえて言うならば型から作成される実体でしょうか。 C言語の実体のようにインスタンスはクラスから作成されます。 |
インスタンスメソッド | 作成したインスタンスへの処理を行うメソッドです。いいかえると一般的なメソッドの事です。 これに対してインスタンスを生成しなくても呼び出せるクラスメソッドがあります。 ->メソッドを参照願います |
クラス | 型。構造体の型 |
クラスメソッド | クラスメソッドはクラスに対して呼び出す事ができるメソッドです。 いいかえるとインスタンス(実体)が作られていなくても呼び出す事ができます。 インスタンス生成前にも呼び出す事ができるので、主にインスタンス生成メソッドに使われます。 またこれはjavaでいうところのstaticメソッドと同じです。 その処理を行いたいがインスタンスを作成するまでもないような場合に使用します。 |
メソッド |
関数 Objective-Cのメソッドにはクラスメソッドとインスタンスメソッドがあります。 Objective-Cの場合、呼出すという表現は使わずメッセージを送るという表現を用います。 メッセージを送るということの意味はオブジェクト指向である事を指しています。 インスタンスメソッドは実体を作った後にメッセージを送る普通のメソッドです。 |
呼出し形式 |
メソッドの呼出し形式がまたちょっとかわっております。
引き数のところにキーワード(型ではありません)なるものをつけるのですが、なぜか先頭の引き数だけはキーワードをつけません。
なんでこのように記述するのか私にはよくわかりません。 [メソッド名 :引数1 キーワード2:引数2]; |