-1

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

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

2 回答 2

3

它是一个复合语句,可以分成两个语句

[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:相同类实例的选择器的方法正在被调用(发送消息),参数为messageYES

于 2013-11-14T14:19:48.620 回答
0

[self sendMsg] .It is a way of calling a method in ios. With sendMsg specifying the name of the method to be called and self is the entity to call the method.

于 2013-11-14T14:56:57.870 回答