2012-05-07 4 views
7

私はIB経由でセットアップしたオブジェクトに対していくつかのアニメーションを実行しようとしています。私はsetAlphaを使用してspecialClassを隠すことができるようにしたいiOS - setAlphaに関するimport vs forward宣言

@property (nonatomic, retain) IBOutlet MySpecialClass *specialClass; 

、私:

@class MySpecialClass; 

、その後、そのような設定プロパティを:私はそうのように私の.hに前方宣言を追加していますコンパイルしようとすると、xcodeから次のエラーが発生します。

Receiver type 'MySpecialClass' for instance message is a forward declaration. 

フォワード宣言の代わりにクラスをインポートする必要がありますか?私は必要がなければ何も不要なものを輸入する必要はないと思います。

答えて

44

フォワード宣言は、 "ちょっと、私が宣言していることを知っていますあなたが認識していないものが、私が@MyClassと言うときは、実装で#importすることを約束します。

あなたは円形が含まれるようなものを防ぐために、前方宣言を使用して「約束」あなたは、あなたのコードを作るには、あなたが

+4

私が読んできた最も簡潔でわかりやすい説明の1つ。もし可能なら、私はあなたにもっと投票します。 – BonanzaDriver

+1

私は最終的に前方宣言、感謝を理解している:) – dreampowder

5

インポートする必要があります。フォワード宣言は、このクラスが存在するコンパイラを静かにすることだけですが、そのメンバ、メソッド、プロパティ、サイズについてはわかりません。

+9

後でそれを#IMPORTだろうということですが、(MyClassのは... MyClassのをインポートYOURCLASSをインポート)しかし、インポートは.mファイルで行うことができます。通常のパターンは.mでインポートされた.hの前方宣言です。 – jrturton

+0

はい、そうです。 – graver

関連する問題