iOS开发-OC篇 load方法 和 initialize方法比较
Load方法 和 initialize方法的比较
在OC语言中,我们相比之下对于load和initialize方法的使用比较少,所以会不是很清楚的了解二者的用途和区别,所以整理了一下,和大家进行分享,有所得不对的地方,希望能够指出来,多谢!
1、load方法特点:
1> 当类被引用进程序的时候会执行这个函数
2> 一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前。
3> Category的load也会收到调用,但顺序上在主类的load调用之后。
2、initialize方法特点:
1> initialize的自然调用是在第一次主动使用当前类的时候
2> 和load不同,即使子类不实现initialize方法,会把父类的实现继承过来调用一遍。注意的是在此之前,父类的方法已经被执行过一次了,同样不需要super调用。
3、load和initialize有很多共同特点,下面简单列一下
1> 在不考虑开发者主动使用的情况下,系统最多会调用一次
2> 如果父类和子类都被调用,父类的调用一定在子类之前
3> 都是为了应用运行提前创建合适的运行环境
4> 在使用时都不要过重地依赖于这两个方法,除非真正必要
由于initialize的这些特点,使得其应用比load要略微广泛一些。可用来做一些初始化工作,或者单例模式的一种实现方案。这个单例方法会在后面给大家提到。
总结一下:就是load 方法会在程序加载的时候就会调用里面的内容,(不进行手动调用的话)整个程序只会调用一次,而initialize(比较难背的英文单词)方法只有在程序使用到包含它的类的时候,才会调用,也只是一次。所以我们在开发的过程中,可以利用他的整个特性,在里面写一些方法,这样做会使得App的运行速度加快。比如,在开发中我们使用数据库操作的时候,会缓存大量的数据,当用户刚开始打开App的时候,如果进行处理,那么就会产生开始使用的时候,出现卡顿几秒钟,这是在加载数据,但是这些数据我们开启App不能全部用到,因此我们将数据库的相关操作,写在initialize中,这样当用到的时候才进行数据的缓存,会提升整个App的性能。
如果那里写的不对,请大家给我留言,本人十分喜欢和别人探讨技术,希望能共同进步。