iOS - 关于setAlpha的import vs forward声明

时间:2012-05-07 18:00:17

标签: ios xcode class import forward-declaration

我正在尝试对我通过IB设置的对象进行一些动画制作。我正在向我的.h添加一个前向声明:

@class MySpecialClass;

然后设置如下属性:

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

我希望能够使用specialClass隐藏setAlpha,但在尝试编译时,我从xcode收到以下错误。

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

我是否需要导入我的课程而不是转发声明?如果我不需要,我不想输入任何不必要的东西。

2 个答案:

答案 0 :(得分:49)

前向声明只告诉编译器,“嘿,我知道我声明了你不认识的东西,但是当我说@MyClass时,我保证会在实现中#import它。”

你使用前向声明来阻止像循环包含的东西(MyClass导入你导入MyClass的YourClass ......),但你用你的代码做的'承诺'是你以后#import它

答案 1 :(得分:5)

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