本文是练习打字而作,如有疑问,请联系我,第一时间删除。
首先声明一点,这篇文章可能是因为我主管的错误理解导致的,可能是我对网上其他博客理解有误,假如确实这样,很抱歉,可在评论中与我探讨,我搞明白了会把此简书删除的,谢谢!
一、错误的认知
直接上重点,之前对于Load的认知是这样的,或许是看的博客或者订阅号或者一些其他途径,总之对于他的加载方式是这样理解的:
Load是只要类所在文件被引用就会被调用,如果类没有被引用进项目,就不会有load调用;
我理解的被引用,指的是引用实现Load方法的头文件,即.h,加入这里就理解错了,那就是错怪各位大神了...下面就不用看了
二、错误发现过程及测试
之前写的一篇博客《iOS MVVM+RAC 从框架到实战》中有对APPDelegte的优化如下;
当类对象被引入项目时,runtime会向每一个类对象发送load消息,load方法还是非常神奇的,因为它会在每一个类甚至分类被引入时仅调用一次,调用的顺序是父类优先于子类,子类优先于分类,而且load方法不会被类自动继承,每一个类中的load方法都不需要像viewDidLoad方法一样调用父类的方法
三、正确的认知
iOS中的load方法会在加载类的时候就被调用,这个加载不是指引用,而是APP指在启动的时候就会加载所以得类,并调用每个类的实现了的+load方法,他是会在main()函数之前被调用的!所以,这种情况下,只要你新建的类在项目中,并且实现了Load方法,那么一定会被调用,而且调用的非常早!