A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© doudou33420 中级黑马   /  2014-11-7 15:17  /  776 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义一个分类 也就是给类增加扩展, 想使用扩展的功能必须先#import你的分类文件
但如果你在分类里重写原类里面的方法的话 不用#import分类文件 就可以使用分类重写的内容
例:
person类
有个run 方法 执行后 提示 person跑;
person.lf 分类
重写run方法  执行后 提示 分类跑;
student 继承person类; (student 里面没有import person.lf)
main 函数(也没有import person.lf
执行 student *s1 = [student alloc]init];
   [s1 run];
结果: 分类跑

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

1 个回复

倒序浏览
刚有查了一下分类资料大致弄明白了为什么不用import
如果在类目中覆盖现有类的方法,这样会引起super的消息的断裂,因为类目中的方法具有更高的优先级,因此,一般不要覆盖现有类中的方法

就是因为 分类有更高的优先级,  所以在加载的时候 不管你有没有引用 他已经重写了父类的方法 你永远无法使用父类原来定义的方法了 只能使用分类重写的方法.  
这么做是不被推荐的,  因为分类的思想是在不更改原类的基础上新增方法
如果我们都重写了 那父类的方法将不存在,严重影响其他调用该方法的对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马