Objective-C中的函数重载?

Nis*_*mad 1 overloading objective-c dynamic-binding ios

根据我的理解,C专家Objective-C是一种动态绑定语言,不允许重载类中的任何方法.

但是,如果我编写两个具有相同名称但不同数量的参数列表的方法,有一件事让我恼火:

 // Which is not allowed in objective-c

 -(void)updateValue:(int)intVal{

  } 

 -(void)updateValue:(float)floatVal{

  }
Run Code Online (Sandbox Code Playgroud)

但Objective-C允许的第二种情况是:

 // Allowed in Objective-C

 -(void)updateValue:(int)intVal{

   }

 -(void)updateValue:(float)floatVal :(int)intVal{

   }
Run Code Online (Sandbox Code Playgroud)

虽然两种情况都是方法重载.

现在我的问题是为什么允许第二种情况.

在第二种情况下使用两个参数的方法是否更改了方法名称?或者是其他东西 ?

请解释一下.

CRD*_*CRD 7

在第二种情况下使用两个参数的方法是否更改了方法名称?

是.方法名称是其所有参数前缀的组合,包括冒号.所以你的两种方法是updateValue:updateValue::.

HTH