8

IB を介してセットアップしたオブジェクトでいくつかのアニメーションを実行しようとしています。次のように .h に前方宣言を追加しています。

@class MySpecialClass;

次に、次のようにプロパティを設定します。

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

specialClassusingを非表示にしたいのですがsetAlpha、コンパイルしようとするとxcodeから次のエラーが発生します。

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

前方宣言の代わりにクラスをインポートする必要がありますか? 必要がない場合は、不要なものをインポートする必要はありません。

4

2 に答える 2

49

前方宣言はコンパイラに、「あなたが認識していないものを宣言していることは知っていますが、@MyClass と言うときは、実装で #import することを約束します」と伝えるだけです。

前方宣言を使用して、循環インクルードのようなものを防ぎます (MyClass は、MyClass をインポートする YourClass をインポートします...)。ただし、コードで行う「約束」は、後で #import することです。

于 2012-05-07T18:09:03.910 に答える
5

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

于 2012-05-07T18:04:56.283 に答える