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 导入 YourClass 导入 MyClass ......),但您使用代码做出的“承诺”是稍后将 #import

于 2012-05-07T18:09:03.910 回答
5

你需要导入它。前向声明只是为了让编译器知道这个类的存在,但它不知道它的成员、方法、属性、大小......

于 2012-05-07T18:04:56.283 回答