黑马程序员技术交流社区
标题:
关于重写系统自带类方法
[打印本页]
作者:
云霄之上
时间:
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