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