Objective-C学習log:Objective-Cの文法2

初日にiPhone4Sが手に入らないことが確定しましたが、気をとり直して引き続き、たのしいCocoaプログラミング[Leopard対応版]Objective-Cの文法の学習です。このエントリー書いている間にiOS 5がきそうですね。

オブジェクトのための変数型

Objective-CC言語ベースなので、基本的な変数の型はC言語と同じです。Objective-Cではオブジェクトのための変数型が追加されています。

インスタンスオブジェクトのための変数型は「クラス名のポインタ」という形式になり、クラス名にアスタリスクをつけたものを変数の型として使います。例えば、NSStringのための変数は「NSString* string」のように確保します。

オブジェクトの変数のための型には「id型」という特殊なものが用意されています。すべてのオブジェクトはid型の変数に代入することができますが、それではその変数が何のクラスだったかわかりにくいので、それを避けたいときにはクラス名のポインタ型を使います。

C言語では、ポインタが何も指していない状態を表すためにNULLという値がありました。Objective-Cでは、オブジェクトのための変数が、何のオブジェクトも指し示していないことを「nil」という値で表します。なお、無効なオブジェクトを表すnilは、実際は0の値を意味しています。

メソッドの呼び出し

インスタンスメソッドの呼び出しの文法は、

戻り値 = [インスタンス メソッド名];

です。引数が1つの場合と2つの場合は下記のようになります。

[インスタンス メソッド名:引数];
[インスタンス メソッド名:引数 ラベル:引数];

クラスメソッドの呼び出しの文法自体は、インスタンスメソッドのものと変わりません。クラスメソッドはクラス全体に対して呼びだすので、呼び出す対象のところにクラス名を指定します。

命名規則

文法の学習は以上で終わりで、ここでは命名規則を学びます。Cocoa命名規則なのか著者のお勧めなのか、判別しづらいところもありますが、大切そうなところを箇条書きでまとめます。

  • クラスの名前は大文字で始める
  • Cocoaで登場するクラスは、すべて「NS(NextStepMac OS Xの前身)」という文字で始まっている
  • インスタンス変数の最初の文字は小文字にする
  • メソッドの最初の文字は小文字にし、単語をつなぐときは単語の頭を大文字にする
  • 値を設定するメソッドの名前には、設定する属性の名前の前にsetをつける
  • 値を取得するメソッドの名前は、属性の名前がそのままメソッド名になる