2012年9月23日日曜日

インスタンス変数はヘッダーファイルではなく実装ファイルで宣言すべき?

インスタンス変数の宣言は前まではヘッダーファイルで行っていたのですが、どうやら実装ファイルでの宣言が正しいようです。

これはAppleの公式ドキュメント「Objective-C プログラミング言語」の35ページ前半に記述があります(2012/09/23現在の内容)。以下抜粋します。

インスタンス変数は実装詳細であり、通常、クラス自身の外からアクセスされることはありません。さらに、実装ブロック内に宣言すること、あるいは宣言済みプロパティから自動生成させることも可能です。したがって通常は、インスタンス変数宣言をパブリックインターフェイスで行うべきではないので、波括弧も省略してください。

インスタンス変数の宣言場所

ということから今までは以下のようにヘッダーファイルに宣言していましたが、

ヘッダーファイル(.h)

@interface MyObject : NSObject
{
    // インスタンス変数の宣言
}
・・・
@end

以下のように実装ファイルで宣言する必要があります。

実装ファイル(.m)

@implementation ClassName
{
    // インスタンス変数の宣言
}
・・・
@end

おわり

ドキュメントはやはり一度見ておくものですね。
間違いなどがありましたらコメントしていただけると嬉しいです。

参考記事

Objective-C プログラミング言語 - Apple公式ドキュメント

0 件のコメント:

コメントを投稿