有人可以为我澄清这一点:
当有多个参数时,参数在冒号后面的方法名称中声明。 参数在声明中将名称分开,就像在消息中一样。例如:
- (void)setWidth:(float)width height:(float)height;
所以在上面:
但为什么它很高:(漂浮)高度;而不只是:
- (void)setWidth: (float)width (float)height;
答案 0 :(得分:6)
Objective-C 没有命名参数。它也没有“关键字参数”。
Objective-C使用所谓的“交错参数”。也就是说,方法的名称与参数交错,以便产生更具描述性和可读性的代码。
[myObject setWidth:w height:h];
上面有效地读取,因为告诉myObject将宽度设置为w,将高度设置为h 。
在上述情况下,方法的名称 - 选择器 - 正好是setWidth:height:
。不多也不少。
这一点在Objective-C guide中解释。
答案 1 :(得分:2)
这只是Objective-C的一个功能,可以在阅读方法调用时让您的生活更轻松,如下所示:
[myObject setWidth:w height:h];
您可以退出标签(第一个除外),因此,如果确实想要,您可以:
-(void)setWidth:(float)width :(float)height
{
...
}
并将其用作:
[myObject setWidth:w :h];
但这并不符合Objective-C语言的精神。这些标签的重点是使这些调用更容易理解,而无需查找方法定义。
答案 2 :(得分:1)
参数名称恰好也出现在方法名称中这一事实让您感到困惑。想想你实际上如何称呼它:
[something setWidth:500 height:250];
根据你的建议,它会是这样的:
[something setWidth:500 250]; // That 250 is just kind of hanging
// out there — not very readable
您还可以为参数赋予与其前面的方法名称部分完全不同的名称:
- (void)setGivenName:(NSString *)first surname:(NSString *)last