黑马程序员技术交流社区
标题:
请教一下关于分类以及Load,initialeze的问题。
[打印本页]
作者:
诸葛佰通
时间:
2014-6-28 15:48
标题:
请教一下关于分类以及Load,initialeze的问题。
本帖最后由 诸葛佰通 于 2014-6-28 15:49 编辑
请教一下:
1. 子类在调用父类方法时能不能用到父类的分类的方法?
2. 在程序启动加载Load方法的过程中,为什么子类会优于父类的分类先进行load ?
按优先级顺序不是这样的么:
NSObjcet
↓
A类 → A类的分类(优先级高于A类)
↓
B类 (A类的子类)
在LOAD过程中不是按级别一级一级加载下来的么?
3. 在第一次调用类方法时,如调用B类,则系统会自动调用 B类的initialize方法,同时也会调用其父类的initialize方法。
如果这里B类的父类A类跟A类的分类同时都重写了initialize方法,那么在调用B类时,是会调用A类的initialize方法呢还是A类的分类的initialize方法?为什么?(敲过代码是调用A类的,可是想不明白为什么,分类的优先级不是高于其本类么?)
求高手解惑下。。。
作者:
chain
时间:
2014-6-30 01:29
1:子类继承了父类,就继承了父类的成员变量和父类的所有方法,而分类只是在不影响原类的基础上扩充方法,所以子类可以用到父类的分类方法
2:程序运行时会加载项目中所有的类,加载完毕会调用类的load方法,调用顺序是父类->子类->分类
3:关于你说敲过代码是调用原类的方法,我表示不能理解,因为当调用子类的时候,首先会初始化父类,所以先调用父类的initialize方法,然后在调用子类的initialize方法,由于分类重写了initialize方法,且分类的优先级高于原类,所以会调用分类的initialize方法
有什么问题,随时讨论交流
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2