黑马程序员技术交流社区

标题: 请教一下关于分类以及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