2010年4月22日木曜日

Objective-Cのヘッダファイル(*.h)

ヘッダファイルでは、クラスに含まれるインスタンス宣言(オブジェクトのひな形の定義)や、メソッドのプロトタイプ宣言(関数などの呼び出し方を既定する宣言文)を行います。

------------- APPDelegate(標準メソッド等以外の設定先)の例----------------------
#import

@interface Web_blowserAppDelegate : NSObject 
<UIApplicationDelegate>
{
    UIWindow *window;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
-(IBAction) loadUrl: (UITextField *) sender;

@end

------------------------------------------------------------
解 説
------------------------------------------------------------
★ #import <ヘッダファイル>
他のヘッダを含めて実装する宣言です。C言語では#includeとなりますが、Objective-Cでは#importとし、多重定義を自動で回避してくれるそうです。
-------------------------------------------------------------
★ クラス宣言
@interface @endで囲んで宣言します。
@interface クラス名:スーパークラス<プロトコル1, プロトコル2, ............>
{
 インスタンス変数宣言
}
 メソッドプロトタイプ宣言
@end
------------------------------------
★ インスタンス変数(フィールド、データメンバ、メンバ変数、属性<呼び方いろいろありすぎ(@@;;>)宣言
型名 変数名;

型には以下のようなものがあります。
・整数型
・実数型
・文字列型
・クラスオブジェクト型(オブジェクトを保持する変数<ポインタ>)

 
   UIWindow *window;

 クラスオブジェクト型のUIWindow型の変数(Window)を宣言する場合は上記のようにポインタで宣言します。
-------------------------------------------------------------
★ メソッドプロトタイプ宣言
クラスに対するメソッド(クラスメソッド<インスタンスを生成するメソッド、クラス全体に対する情報取得のメソッド(画像フォーマット等))の場合は”+”、インスタンスに対するメソッドの場合は"ー"を先頭にを書くそうです。


(1)引数<メソッドに渡す値>のないメソッドの場合
-(void) sayHello;
      -(返り値の型) メソッド名;

(2)引数<メソッドに渡す値>が一つのメソッドの場合

-(void) sayMessage: (char *) message;
      -(返り値の型) メソッド名: (引数の型) 引数の名前;

(3)引数<メソッドに渡す値>が複数のメソッドの場合

-(void) sayMessage: (char *) message
     speed:(int     ) speed
                          pitch: (int      ) pitch;
      -(返り値の型) メソッド名+引数1の説明: (引数1の型) 引数1の名前
                  引数2の説明: (引数2の型) 引数2の名前
                                                                   :
                    引数nの説明: (引数nの型) 引数nの名前;
       *)引数の説明は省略化
----------------------------------------------------------------------------------------
この事例では、UITextField * でURLの入力を拾い受け渡すメソッドを定義しています。
返り値にIBActionを指定することで、Interface BuilderのGUIを使ってアクションを結びつけることができます。ファイルを「保存」したあと(でないとできません)、UITextFied のDid End On Exit という入力完了アクションを、Inspectorウインドウ上のApp Deligateにドラックすることで、関係をつけることができます。


-------------------------------------------------------------
参考:
NSObject:
iPhone OSのクラスのほぼ全てのルートクラス(トップのクラス)だそうです。

0 件のコメント:

コメントを投稿