ぐぅたらな活動

管理人の仕事・活動等で得た知識を残す為のブログ

6月 6th, 2011

Objective-C 基本(2)

趣味, by 管理人.

こんにちは。

ディレクティブからクラス、インスタンス、メソッドのまとめです。

コンパイラは@で始まる『ディレクティブ』を解釈する。

@interface クラスまたはカテゴリのインタフェースの定義
@implementation クラスまたはカテゴリの定義
@protocol 形式プロトコルの宣言を開始
@end クラス・カテゴリの定義・プロトコルの宣言終了


次のディレクティブを使って、インスタンス変数の有効範囲を指定する。

@private インスタンス変数の有効範囲を、それを宣言しているクラスに限定する。
@protected ンスタンス変数の有効範囲を、それを宣言しているクラスと派生クラスに限定する。
@public インスタンス変数の有効範囲を限定しない。

クラスの定義にはヘッダファイルと(filename.h)にインターフェースを記述し、実装ファイル(filename.m)にクラスの実装を記述する。
インターフェースの定義は@interfaceディレクティブで始まり、@endディレクティブで終了する。
クラス名以外は省略可。

#import “スーパークラス.h”

@interface クラス名 : スーパークラス名 <プロトコル> {
@private
@protected
@public
インスタンス変数の宣言
}
- インスタンスメソッドの宣言
+ クラスメソッドの宣言
@end

クラスの継承はコロン(:)で行う。
スーパークラスのヘッダファイルをインポートする。継承を行わない場合には、そのクラスがルートクラスとなる。
<>にプロトコルのリストを指定した場合はそれらが宣言されているヘッダファイルをインポートする。

『-』記号がインスタンスメソッドを意味する。
『+』記号がクラスメソッドを意味する。

クラスの実装は@implementationディレクティブで始まり、@endディレクティブで終わる。

#import “クラス名.h”
@implementaion クラス名
メソッドの定義
@end

クラスのインスタンスの作成は次のように行う。
allocメソッドはスーパークラスのNSObjectのクラスメソッドであり、インスタンスにメモリを割り当て、initメソッドで割り当てられたメモリを適切に初期化する。

id myProduct
myProduct = [[Product alloc] init];

■まとめ
クラスの定義は『クラス名.h』でクラスの実装は『クラス名.m』で行う。
クラスの定義は『@interface』から『@end』の間で行う。
クラスの実装は『@implementation』から『@end』の間で行う。

インスタンスメソッドの定義は以下のように行う。

- (戻り値の型)メソッド名:(引数の型)引数1 Label:(引数の型)引数2

メソッドの実装には隠し時期しい『self』『_cmd』が渡される。

■まとめ
インスタンスメソッドは『-』文字を先頭において定義する。
メソッドの引数はラベルの文字列の後ろに続ける。

クラスメソッドの定義は次のように行う。

+ (戻り値の型)メソッド名:(引数の型)引数1 label:(引数の型)引数2

クラスメソッドはクラスから直接呼び出す。
[クラス名 メソッド名]

■まとめ
メソッドにはインスタンスメソッドとクラスメソッドがある。
インスタンスメソッドはクラスをインスタンス化しないと呼び出せない。
クラスメソッドはクラスから直接呼び出せる。

次はプロパティについてまとめます。

Back Top

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です