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的声明。
答案 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]