类本质的东西
- 类也是一个对象;
- Person对象的类型是Class类型,Class里面包含了*
- 类本身也是对象,是个Class类型的对象;简称类对象;
- 利用Person类对象 创建Person类型的对象;
- 利用Class类型创建Person类对象;
- //获取内存中的类对象
- Class c = [p class];
- Class c2 = [p2 class];
- 也可以用Person类来获取类对象;
- Class c3 = [Person Class];
- 我们要查看p和p2的类对象,就是利用类方法class获得,c和c2的类对象都是Person类,而Person类本身就是Class类型;
- class类型的数据就是class对象;class是一个类方法;
- 如果本身是指针,就不需要加&就可以打印地址;如果不是指针类型,就用&取地址;
- 类对象 == 类;
- 一个类也可以叫类对象,因为它本身也是通过Class类创建出来的;如
- Person *p = [[Person alloc]init];
- Class c = [p class];
- [c test];
- c *p2 = [[c new]init];
- 上面的语句都是成立的,
类的加载过程;
- 不掌握这个东西也可以开发;
- 下面的操作都是会先调用父类的方法;
- load是程序启动的时候调用;initialize是第一次使用类的时候调用;
- 调用子类的过程,会先调用父类的方法;如有3个类,a是父类,b是a的子类,c是b的子类,那么第一次使用b类的时候,会先加载3个类的load方法;然后调用父类的initialize的方法,再调用b类的initialize的方法;
- 如果有分类,就先调用分类的initilize方法;
- 当程序启动的时候,就会加载一次项目中所有的类,类加载完毕后就会调用+load方法
- + (void)load
- {
- }
- 当第一次使用这个类的时候,就会调用一次initialize方法;
- + (void)initialize
- {
- }
- 总结:
- 当程序启动是,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。
- 当第一次使用某个类时,就会调用当前类的+initialize方法;
- 先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
- 先初始化父类,在初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
- 先加载父类,再加载子类;
- 先加载父类,再加载分类;
- 。
- Class c = [Person class];
- Person *p2 = [c new];
时间: 2024-11-03 21:34:15