Objective-C代码中[self sendmsg:...]的含义是什么?

时间:2013-11-14 14:04:29

标签: ios objective-c macos driver development-environment

我是驱动程序开发的新手,所以我想确切地知道Objective-C中以下行的含义

[self sendMsg:[NSData msgWithID:kReqConfiguration subID:0 dest:kAddrThisPanelServer] :YES]; 

2 个答案:

答案 0 :(得分:2)

这是一个复合语句,可以分为两个语句

[self sendMsg:[NSData msgWithID:kReqConfiguration subID:0 dest:kAddrThisPanelServer] :YES];

变为:

NSData *message = [NSData msgWithID:kReqConfiguration subID:0 dest:kAddrThisPanelServer];
[self sendMsg:message :YES];

但是此代码存在约定问题。虽然方法名称不必穿插参数,但最佳做法是这样做。在这种情况下,在最后一个“:”之前没有方法名称部分,方法选择器(签名)是:

sendMsg::

最好声明为:

- (void)sendMsg:(NSData *)msg option:(BOOL)option;

将有选择器(签名):

sendMsg:option:

并且产生的调用将更容易理解为:

NSData *message = [NSData msgWithID:kReqConfiguration subID:0 dest:kAddrThisPanelServer];
[self sendMsg:message option:YES];

这意味着使用参数sendMsg:option:message调用具有相同类实例的选择器YES的方法(发送消息)。

答案 1 :(得分:0)

[self sendMsg]。这是一种在ios中调用方法的方法。 使用sendMsg指定要调用的方法的名称,self是调用方法的实体。