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

时间:2010-12-14 22:07:24

标签: objective-c overloading

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

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

1 个答案:

答案 0 :(得分:26)

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

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