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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 云霄之上 中级黑马   /  2014-7-19 18:43  /  1287 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在视频中老师会经常重写一些系统自带的方法 ,比如在讲到类的本质的时候重写了+(void)方法(这个方法是程序运行时候 加载类对象时候使用的类方法)  那么如果重写了这个方法 那么肯定也就是原来的没有重写以前的+(void)方法被覆盖了  那么应该会导致加载类对象的时候会出现错误啊  毕竟 跟原来自带的方法已经不一样 了  ,但是  看老师的视频的时候老师也没有说到这一点啊 而且 系统也运行正常啊 ???  求解

5 个回复

倒序浏览
在调用优先级上会大于父类,会覆盖原来的方法,不会报错
回复 使用道具 举报
没看明白你的意思。能举个具体的例子么?
回复 使用道具 举报
写错了 是调用+(void)load 方法的时候
回复 使用道具 举报
既然先调用 子类 的方法那么必然会调用重写过的+(void)load方法  那么就必然会覆盖原来的方法  ,那么 原来系统中自带的+(void)load 方法必然会失效  也就是说加载类的时候是没有原来系统自带的+(void)load方法 那么怎么会加载呢?
回复 使用道具 举报
云霄之上 发表于 2014-7-19 19:03
既然先调用 子类 的方法那么必然会调用重写过的+(void)load方法  那么就必然会覆盖原来的方法  ,那么 原来 ...

所以覆盖父类方法时,一般会在第一行调用父类被覆盖的方法。比如重写init方法时,第一句一般是:[super init]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马