2012年5月13日日曜日

クラスの宣言:インターフェースファイル「.h」

Objective-Cのクラスの宣言はインターフェースファイルに記述します。インターフェースファイルは変数や関数のプロトタイプ宣言記述したC言語で言うヘッダーファイルのようなもので拡張子は「.h」になります。

インターフェースの基本的な構成

インターフェースファイルの基本的な構成は以下のようになります。

#import インターフェースファイル名

@interface クラス名 : 上位クラス{
インスタンス変数宣言
}

メソッドの宣言

@end

#import

ほかのクラスのインターフェースを参照するためのものです。クラスの宣言には必ず上位クラスを指定する必要があります。
C言語の「#include」に似ていますが、同じヘッダー/インターフェースファイルの重複読み込みを避けてくれる機能を持っています。

クラス名

「@interface」はコンパイラディレクティブのひとつで、インターフェースであることを示します。上位クラス名に記述するものは継承するクラス名を記述します。

インスタンス変数宣言

「@interface」から「@end」の中にインスタンス変数を記述します。インスタンス変数は「メンバ変数」または「フィールド」と呼ぶ場合もあります。

インスタンス変数のスコープ

スコープを指定するディレクティブは以下の4つがあります。

  1. @private
  2. @protected
  3. @public
  4. @package

1はそれを宣言したクラスの内部からのみアクセス可能です。
2はそれを宣言したクラスとそのクラス継承するクラスの内部からのみアクセス可能です。言語としてはこれがデフォルトの設定になっており、何も記述しなければこのディレクティブが設定される。
3はプログラムのどこからでもアクセスが可能です。
4はそのクラスを実装している実行コードから見ると「@public」と同じ扱いになり、それ以外のコードからは「@protected」と同じ扱いになります。これはフレームワークとしてクラスを利用するときに適しています。

メソッドの宣言

メソッドはクラスメソッドとインスタンスメソッドがあります。

クラスメソッドはメッセージの受け手がクラスそのものであるメソッドで先頭に「+」が付き、インスタンスメソッドはそのクラスのインスタンスがメッセージの受け手となるメソッドで先頭に「-」が付きます。以下が書式の例になります。

+ (戻り値) メソッド名;
- (戻り値) メソッド名;

パラメータを取るメソッドの場合は以下のようになります。

- (戻り値) メソッド名: (パラメータの型) パラメータ名;

複数のパラメータを取る場合は以下のようになります。

- (戻り値) メソッド名1: (パラメータ1の型) パラメータ名1 メソッド名2: (パラメータ2の型) パラメータ名2;

可変の数のパラメータを取るときは以下のようになります。

- (戻り値) メソッド名: (パラメータの型) パラメータ名, ...;

この場合はパラメータ名の後ろに「,(カンマ)」で区切って複数記述します。

参考書籍

Objective-C プログラマーズバイブル

0 件のコメント:

コメントを投稿