本帖最后由 doudou33420 于 2014-11-7 14:29 编辑
看视频的时候学到OC和其他语言不一样 是没有重载的 只有重写
但发现某些情况下是可以重载的
- 例: sumWith:(int)a;
- sumWithL(int)a and:(int)b;
复制代码
这样是完全没问题的. 但这就和我们学习的知识冲突了. OC为什么有重载
查了一些资料 发现问题是 OC对函数名的定义:
obj-c中的方法签名是仅依靠各标签来判定的,不像c/c++中,是依赖函数名+参数类型列表
所以你的说法中,改变了第二个参数的描述,实际上就是一个全新的方法签名了
简单的说: OC函数名是由多个参数描述字符串组成的;
明白这点 在看刚刚的重载
sumwith:
sumwith:and
完全是两个函数 两个不同的SEL
所以其实OC是没有重载的,,
当别人问OC有没有重载的时候,, 你立马可以告诉他 我们OC也有重载, 不信我写给你看..(吼吼)
|