クラスは以下の2つに分けて定義する。
1) インタフェース
2) 実装
通常インタフェースと実装は別々のファイルとし、インタフェースは.h、実装は.mという拡張子をもつ。
インタフェース
インタフェースはディレクティブ@interfaceで始まり、ディレクティブ @endで終わる。
クラスのインタフェースは以下のように定義する。
@interface クラス名 : スーパクラス { インスタンス宣言 } メソッド宣言 プロパティ宣言 @end
メソッド宣言
クラスメソッド
先頭に"+"(プラス)をつける。
戻り値の型はC言語の型キャストの構文を使って記述する。
戻り値やパラメータの型を省略すると、デフォルトでidが使用される。
パラメータはメッセージと同様に名前の後のコロンの後に記述する。
+ (戻り値の型)メソッド名; +(戻り値の型)メソッド名:(パラメータの型)パラメータ; +(戻り値の型)メソッド名:(パラメータの型)パラメータ 名前:(パラメータの型)パラメータ;
インスタンスメソッド
先頭に"-"(マイナス)をつける。
戻り値の型はC言語の型キャストの構文を使って記述する。
戻り値やパラメータの型を省略すると、デフォルトでidが使用される。
パラメータはメッセージと同様に名前の後のコロンの後に記述する。
-(戻り値の型)メソッド名; -(戻り値の型)メソッド名:(パラメータの型)パラメータ; -(戻り値の型)メソッド名:(パラメータの型)パラメータ 名前:(パラメータの型)パラメータ;
可変パラメータをもつメソッド
Cと同様にカンマと省略記号を使って宣言する。
- (void)methoddayo:param1, ...;
プロパティ宣言
プロパティ宣言は以下のように記述する。
@property (attribute) Type propertyName;
インスタンス宣言
もともと必要だったが、今や実装ブロックやプロパティからの自動生成が可能なため、
通常はここでインスタンス宣言すべきでない、とのこと。
(波括弧も不要)
.