zoukankan      html  css  js  c++  java
  • 类本质的是? 类的加载过程?

    类本质的东西
    1. 类也是一个对象;
    2. Person对象的类型是Class类型,Class里面包含了*
    3. 类本身也是对象,是个Class类型的对象;简称类对象;
    4. 利用Person类对象 创建Person类型的对象;
    5. 利用Class类型创建Person类对象;
    6. //获取内存中的类对象
    7. Class c = [p class];
    8. Class c2 = [p2 class];
    9. 也可以用Person类来获取类对象;
    10. Class c3 = [Person Class];
    11. 我们要查看p和p2的类对象,就是利用类方法class获得,c和c2的类对象都是Person类,而Person类本身就是Class类型;
    12. class类型的数据就是class对象;class是一个类方法;
    13. 如果本身是指针,就不需要加&就可以打印地址;如果不是指针类型,就用&取地址;
    14. 类对象 == 类;
    15. 一个类也可以叫类对象,因为它本身也是通过Class类创建出来的;如
    16. Person *p = [[Person alloc]init];
    17. Class c = [p class];
    18. [c test];
    19. c *p2 = [[c new]init];
    20. 上面的语句都是成立的,
     
    类的加载过程;
    1. 不掌握这个东西也可以开发;
    2. 下面的操作都是会先调用父类的方法;
    3. load是程序启动的时候调用;initialize是第一次使用类的时候调用;
    4. 调用子类的过程,会先调用父类的方法;如有3个类,a是父类,b是a的子类,c是b的子类,那么第一次使用b类的时候,会先加载3个类的load方法;然后调用父类的initialize的方法,再调用b类的initialize的方法;
    5. 如果有分类,就先调用分类的initilize方法;
    6. 当程序启动的时候,就会加载一次项目中所有的类,类加载完毕后就会调用+load方法
    7. + (void)load
    8. {
    9. }
    10. 当第一次使用这个类的时候,就会调用一次initialize方法;
    11. + (void)initialize
    12. {
    13. }
    14. 总结:
    15. 当程序启动是,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。
    16. 当第一次使用某个类时,就会调用当前类的+initialize方法;
    17. 先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
    18. 先初始化父类,在初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
    19. 先加载父类,再加载子类;
    20. 先加载父类,再加载分类;
    21. Class c = [Person class];
    22. Person *p2 = [c new];
  • 相关阅读:
    Flutter 路由管理
    SpringMVC 集成 MyBatis
    关于windows下安装mysql数据库出现中文乱码的问题
    md5.digest()与md5.hexdigest()之间的区别及转换
    MongoDB基础命令及操作
    redis相关操作&基本命令使用
    python中mysql主从同步配置的方法
    shell入门基础&常见命令及用法
    ORM总结
    多任务:进程、线程、协程总结及关系
  • 原文地址:https://www.cnblogs.com/williamliuwen/p/5370399.html
Copyright © 2011-2022 走看看