黑马程序员技术交流社区

标题: 关于重写系统自带类方法 [打印本页]

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

作者: 为梦想挺身而出    时间: 2014-7-19 18:49
在调用优先级上会大于父类,会覆盖原来的方法,不会报错
作者: fantacyleo    时间: 2014-7-19 18:53
没看明白你的意思。能举个具体的例子么?
作者: 云霄之上    时间: 2014-7-19 19:00
写错了 是调用+(void)load 方法的时候
作者: 云霄之上    时间: 2014-7-19 19:03
既然先调用 子类 的方法那么必然会调用重写过的+(void)load方法  那么就必然会覆盖原来的方法  ,那么 原来系统中自带的+(void)load 方法必然会失效  也就是说加载类的时候是没有原来系统自带的+(void)load方法 那么怎么会加载呢?
作者: fantacyleo    时间: 2014-7-19 19:31
云霄之上 发表于 2014-7-19 19:03
既然先调用 子类 的方法那么必然会调用重写过的+(void)load方法  那么就必然会覆盖原来的方法  ,那么 原来 ...

所以覆盖父类方法时,一般会在第一行调用父类被覆盖的方法。比如重写init方法时,第一句一般是:[super init]




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2