在Objective-C中转换接收器的语法

时间:2012-04-17 14:58:36

标签: objective-c

我声明了一个类/超类对:

@class WSStatement;
@interface WSIfStatement : WSStatement
@property (nonatomic, retain) WSStatement *thenstatement;
@end

我使用Core Data创建子类的实例,并将其分配给WSStatement *指针(即超类)。稍后我想向特定于子类的对象发送消息,编译器给我一个警告,说“找不到实例方法(返回类型默认为'id')”

我试过像这样投射......

[(WSIfStatement *)statement setThenStatement:aVariableParameter];

但警告仍然存在。该程序执行完美,但我无法摆脱讨厌的编译器警告。我无法在任何地方找到完整的正式Objective-C语法描述,所以如果答案显而易见,我会道歉!!

由于

3 个答案:

答案 0 :(得分:2)

如果它不是拼写错误,那么问题是你正在调用错误的方法。

@property (nonatomic, retain) WSStatement *thenstatement;

//Will be called with a lowercase s for statement
[(WSIfStatement *)statement setThenstatement:aVariableParameter];

此外,您不能只是转发声明您继承的类。您需要包含WSStatement的标头。如果您仍然有错误,请确保在实现中合成thenstatement

答案 1 :(得分:1)

您是否合成了这些属性?在你的.m文件中使用:

@synthesize thenstatement;

这将生成设置函数。

答案 2 :(得分:0)

尝试将#import "WSIfStatement.h"添加到您正在进行该通话的.m文件中。