访问未知'ID'类方法 - 目标C.

时间:2011-05-11 10:32:04

标签: objective-c

RS232MsgGetEventDescriptions.h:

#define DECLARE_RS232_NEWMSG(ClassID)\
enum                                 \
{                                    \
ID = ClassID                         \
};                                   \

@interface RS232MsgGetEventDescriptions : RS232Msg
{

}
@end

RS232MsgGetEventDescriptions.m

@implementation RS232MsgGetEventDescriptions

 DECLARE_RS232_NEWMSG(RM_GET_EVENT_DESCRIPTIONS);
@end

EventLogs.m

-(void)event
{
service = [CServiceAppDlg alloc];
if ([service:(REMOTE_MESSAGE_ID)RS232MsgGetEventDescriptions.ID withEvent:pEvent]) 
 {
    NSLog(@"Get Event descriptions!!");
 }
}

我收到“访问未知'ID'类方法”之类的错误 我不应该在这里修改定义。如何传递ID。我将以相同的方式调用不同的描述ID,这是ID的声明。

1 个答案:

答案 0 :(得分:0)

您收到访问未知'ID'类方法错误消息的原因是您未在类RS232MsgGetEventDescriptions中声明名为ID的方法。

当您在代码中说RS232MsgGetEventDescriptions.ID时,您正在调用对象ID的属性RS232MsgGetEventDescriptions,这相当于[RS232MsgGetEventDescriptions ID]。但是,RS232MsgGetEventDescriptions不是一个对象,而是一个类,你的类规范中没有一个名为+ (REMOTE_MESSAGE_ID)ID的类方法(你没有在接口上声明它或在类上实现它实现)。

我还想指出,对于除了属性之外的其他内容,使用点符号是不良做法。由于类不能具有@properties(这些是用于对象),因此应使用标准的Objective-C消息传递表示法[RS232MsgGetEventDescriptions ID]来调用此方法。

Xcode仍然允许您编写object.methodName来调用没有参数的方法,并object.methodName = value来获取带有1个参数的方法。因为它们被解释如下:

object.methodName;  // Becomes [object methodName]
object.methodName = value;    // Becomes [object setMethodName:value]