根据我的理解,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{

   }

尽管两种情况都是方法重载。

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

在第二种情况下,具有两个参数的方法是否会更改“方法名称”?或者是其他东西 ?

请解释一下。

最佳答案

在第二种情况下,具有两个参数的方法是否会更改“方法名称”?

是。方法名称是其所有参数前缀(包括冒号)的组合。因此,您的两种方法是updateValue:updateValue::

高温超导

10-05 19:34