查阅了相关资料,总算稍微了解这个问题了。其实也就一句话的事;OC中的参数类型是在运行时确定,所以如果有重载的方法,它执行的结果是不可预料的。OC中对对象发送消息,在运行时才会识别对象实际所属的类,然后才能到这个类中(类对象)的方法列表中查找方法,进而确定参数类型。还有要知道的一点是,oc中选择器相同的方法的参数类型是一样的。(当然也有例外)。对比下java,java的重载是一个类内的表现的多态,即给一个对象发送同名不同类型或者顺序的参数,会有不同的执行结果。java在编译时期就确定了参数类型。所以可用重载。另外 在继承和复写这块实现的多态,java和oc是一样的机制。over |
|