class 宣言†
- C++, Java で言うところの class に相当するもの
- @interface クラス名 [: 親クラス名] で始まり、 @end で終わる
@interface MyClass : SuperClass // コンパイラディレクティヴの開始
- (TYPE)InstanceMethod: 仮引数リスト ; // インスタンスメソッド
+ (TYPE)Method: 仮引数リスト; // メソッド
@end
インスタンスメソッド†
- - で始まる
- 返り値型は、 - に続いて (TYPE) で示される。
- 返り値を持たない場合は (void) で明示する。
- 返り値型を明示しなかった場合のデフォルトは、 Objective-C で定義されている id 型と解釈される。
クラスメソッド†
- + で始まる
- クラスメソッドにはインスタンスが存在しないため、暗黙の self オブジェクトを使うことは出来ない
class の実装†
- ここでもコンパイラディレクティヴ @ によって括られる。
- class の実装は、 @imprementation と @end で括られた中に実装される。
@imprementation MyClass : SuperClass
- (TYPE)InstanceMethod: 仮引数リスト {
// インスタンスメソッドの実装
}
+ (TYPE)Method: 仮引数リスト {
// メソッドの実装
}
@end
class instance の生成†
メソッドの呼び出し†
Links†
必要なパッケージ(Debian)†
gobjc
gobjc++ (Objective-C++を使う場合)
GCC の場合†
- クラスを使ったコードは、リンクするときに、libobjc が必要。
- Foundation/NSObject.hをimportしてコンパイルすると...
"error: Foundation/NSObject.h: No such file or directory"
というようなエラーが出てしまう。この場合は、libgnustep-base-dev パッケージをインストールすると解決する。
# aptitude install libgnustep-base-dev
その他、入れた方が良いかもしれないもの:
# aptitude install libgnustep-base-dev
# aptitude install gnustep
# aptitude install gnustep-devel