为什么Objective-C不支持方法重载?

Chi*_*ron 11 overloading objective-c

Objective-C不支持方法重载.
为什么?
是否可行,但Apple决定不实施它?或者由于Objective-C的动态特性,它是不可行的?

我的印象是方法重载可以在编译语言(Java,C#)上完成,而不能在解释语言(Ruby,Python)上完成.
有一些真实的吗?

Chu*_*uck 27

这里的区别不在于编译语言和解释语言之间,而是在静态类型(Java,C#)和动态类型(Ruby,Python,Objective-C)之间.在动态类型语言中,类型信息通常直到运行时才知道.在运行时,所有对象都是id在Objective-C 中静态类型化的.

此外,动态类型OO语言的核心思想是,只要对象响应您要发送的消息,就不应该关心对象的类型.因此,基于类型的重载将直接面对它.

  • @Nitish:我不确定如何比我在这里说得更清楚.重载方法意味着具有多个具有相同名称但不同类型的不同方法.Objective-C不要求提前知道类型(通常它们不会是),而是依赖于对象来响应它们被使用的地方的正确消息.这与重载在哲学上是不相容的.Objective-C只是采用不同的方式. (3认同)