我遇到了别人的代码,它声明了这样的方法:
- (void) method:(id)a:(NSString*)b { }
编译器接受此代码,只给出警告:
'a' used as the name of the previous parameter rather than as part of the selector
代码用这种类型声明了各种函数,然后通过 NSSelectorFromString 调用它们,使用签名“methodname::”。所以一切都是一致的。
我想知道该方法签名是否只是一个错误,或者是否还有更多。由于它在代码中一直使用,我不认为这是一个错字。我不认识作者,所以我无法判断这是天才的代码还是相反的代码。
'b' 是匿名参数吗?(如果是这样,不应该在“a”和“:”之间写一个空格来更好地表明这一点吗?)不过,我在 ObjC 文档中找不到任何关于 anon parms 的信息。
如果我将语法更改为为第二个参数命名并相应地修复签名引用,行为是否会有任何变化?我计划进行此更改以消除警告,但我想知道我可能会产生一个我不知道的问题。