2012年8月25日土曜日

#importと@classの使い方について

#importと@classの使い方について調べたのでメモ。

Objective-Cを触っていると頻繁に目にするこの#import@class

どちらも別ファイルで定義されているインスタンス変数なんかを使用する場合に、コンパイルを通すために用いるディレクティブですが、主な違いは以下のようにな感じになります。

  • #import
  • 例:#import "クラス名.h" ヘッダファイルをまるごと読み込む。実装ファイル側で再度読み込む必要がない。C言語の#includeと違い、一度読み込んだファイルは再度読み込むことがない。

  • @class
  • 例:@class クラス名; 「これはクラス名だよ」と宣言するだけ。実際に読み込みは行われない。「#import」と違い、実装ファイル側でヘッダーファイルを読み込む必要がある。

ということで、上記のリストと以下の参考記事からこの2つの使い方を以下にまとめます(早っ)。

  • クラスの機能を実際に使用する必要のない場合、例えばそのクラスのインスタンス変数の宣言だけの場合は、ヘッダーファイル(.h)で@classを使用
  • インターフェースを使用する場合はヘッダーファイル(.h)に#importで読み込む
  • フレームワーク等の循環参照しないものはヘッダーファイル(.h)に#importを使用し読み込む

おわり

循環参照を防ぐためにもヘッダーファイル側で無闇やたらに#importするのは避け、@classを上手く使い分けないといけませんね。

参考記事

Objective-Cのクラスの前方宣言がないと困ること - アールケー開発
#import の使いどころ:循環参照しないために。- webとかmacとかやってみようか
@classと#importの使い分け - StudioT::DevLog
Objective-Cで少しでも疎結合なプログラムを書くためのチェックポイント - TOKOROM BLOG



0 件のコメント:

コメントを投稿