Don';不理解objective-c中的多参数声明
有人能为我澄清一下吗: 当有多个参数时,参数将在冒号后面的方法名称中声明。 参数将名称在声明中分开,就像在消息中一样。例如:Don';不理解objective-c中的多参数声明,objective-c,Objective C,有人能为我澄清一下吗: 当有多个参数时,参数将在冒号后面的方法名称中声明。 参数将名称在声明中分开,就像在消息中一样。例如: - (void)setWidth:(float)width height:(float)height; 因此,在上述情况下: 方法是一个实例变量 返回无效 参数#1是一个浮点数,名为width 参数#2是一个浮点数,名为height 但为什么它高:(浮动)高度;不仅仅是: - (void)setWidth: (float)width (float)height; 这只
- (void)setWidth:(float)width height:(float)height;
因此,在上述情况下:
- (void)setWidth: (float)width (float)height;
这只是Objective-C的一个功能,它可以让您在阅读方法调用时更加轻松,如下所示:
[myObject setWidth:w height:h];
您可以不使用标签(第一个标签除外),因此,如果确实需要,您可以:
-(void)setWidth:(float)width :(float)height
{
...
}
并将其用作:
[myObject setWidth:w :h];
但这并不符合Objective-C语言的精神。这些标签的全部意义在于使这些调用更容易理解,而无需查找方法定义。参数名称恰好也在方法名称中,这一事实让您感到困惑。想想你是怎么称呼它的:
[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
Objective-C没有命名参数。它也没有“关键字参数”
Objective-C使用所谓的“交错参数”。也就是说,方法的名称与参数交错,以便生成更具描述性和可读性的代码
[myObject setWidth:w height:h];
上面的内容实际上是告诉myObject将宽度设置为w,将高度设置为h
在上面的例子中,方法的名称——它的选择器——正好是setWidth:height:
。不多也不少
这在.中都有解释,只是有些混乱,在c中是:void SetWidth(int width,int height);对象设置宽度(500200);这似乎有点奇怪,所有参数似乎都不是相同的约定;对象。设置尺寸(500200);Objective-C没有“标记”参数。您不能只省略方法名称的一部分。也就是说,在上面的示例中,方法“setWidth::”与“setWidth:height:”是不同的方法(这常常会让新手感到困惑)。@bbum,绝对是的。我并不想给人留下他们是一样的印象。你对我如何澄清这一点有什么建议吗?除了“Objective-C将方法名称与参数交错以提高代码的可读性和可描述性”之外,我还没有提出一个非常好的描述。“以便生成更具描述性和可读性的代码”。结果证明他们实现了完全相反的目标。