1. 类本身也是一个对象,是class类型的对象,简称“类对象”。类名就代表着类对象,每个类只有一个类对象。
2. 获取内存中类对象的方法:
1> Class c = [Person class];//使用类名调用class方法
2> Person *p = [Person new];
Class c1 = [p class];//对象方法
c和c1的地址一样,所有对象共用一个类方法
3. 类的加载和初始化:+load、+initialize
1> 当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次
2> 不管程序运行过程有没有用到这个类,都会调用+load加载
3> 当第一次使用某个类时,就会调用当前类的+initialize方法,优先去分类,再者当前类,最后父类。
4> 先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法,最后调用分类的+load方法),先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)。
5> 在初始化的时候,如果在分类中重写了+initialize方法,则会覆盖掉父类的。
6> 重写+initialize方法可以监听类在什么时候被使用。
|
|