【发布时间】:2017-09-27 12:43:01
【问题描述】:
根据我的理解,C 专家 Objective-C 是一种动态绑定语言,不允许重载类中的任何方法。
但是如果我编写两个具有相同名称但参数列表数量不同的方法,例如:
// Which is not allowed in objective-c
-(void)updateValue:(int)intVal{
}
-(void)updateValue:(float)floatVal{
}
但Objective-C允许的第二种情况是:
// Allowed in Objective-C
-(void)updateValue:(int)intVal{
}
-(void)updateValue:(float)floatVal :(int)intVal{
}
虽然这两种情况都是方法重载。
现在我的问题是为什么允许第二种情况。
第二种情况下具有两个参数的方法是否更改了方法名称?还是别的什么?
请解释一下。
【问题讨论】:
-
永远不要写
-(void)updateValue:(float)floatVal :(int)intVal。至少,写-(void)updateValue:(float)floatVal andSomething:(int)intVal。否则,签名为-updateValue:、-updateValue::(无参数介绍时)、-updateValue:andSomething:。
标签: ios objective-c overloading dynamic-binding