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的性能。

如果那里写的不对,请大家给我留言,本人十分喜欢和别人探讨技术,希望能共同进步。

时间: 2024-12-16 06:25:18

iOS开发-OC篇 load方法 和 initialize方法比较的相关文章

iOS开发-OC篇-单例模式

回顾一下load和initialize方法,有几点需要注意. load方法和initialize方法分析: 1.load方法: 1> 当类被引用进程序的时候会执行这个函数 2> 一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. 3> Category的load也会收到调用,但顺序上在主类的load调用之后. 2.initialize方法: 1> initialize的自然调用是在第一次主动使用当前类的时候 2> 和load不同,即使子类

iOS开发——OC篇&纯代码退出键盘

关于iOS开发中键盘的退出,其实方法有很多中,而且我也学会了不少,包括各种非纯代码界面的退出. 其实这里纯代码界面推出如果用到Xib何Storyboard上面去还是一样的思路操作,只不过笔者在开发的时候是在纯代码界面遇到的问题,所以久以此命名. 下面大家介绍怎么在纯代码的情况下,退出(隐藏)键盘,Xib和StoryBoard情况下这里就不解释了(照此思路). 一:UITextField 关于UITextFiel个人感觉又很多中方法,但是最近开发中我用的最多的也就是这两种,根据和已经在公司上班的同

iOS开发——OC篇&消息传递机制(KVO/NOtification/Block/代理/Target-Action)

iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Foundation Framework的,不过本文中还介绍了一些超出Foundation Framework(KVO和Notification)范围的一些消息传递机制,另外还介绍了delegation,block和target- action. 大多数情况下,消息传递该使用什么机制,是很明确的了,当然了,在某

iOS开发——OC篇&常用问题解答(一)

常用问题解答 1.设置 ImagePicker 的大小 ImagePicker 在 Popover Controller 总是以默认大小显示,设置 popoverContentSize 属性似乎无用.解决办法是将ImagePicker “包含”到一个定制的 ViewController 中,然后再 presentPopover 这个 ViewController : UIViewController *containerController = [[UIViewController alloc]

iOS开发——OC篇&特殊数据类型

一些特殊的数据类型 id.nil.Nil.SEL ,IMP Objective-C中有一些很有趣的数据类型经常会被错误地理解.他们中的大多数都可以在/usr/include/objc/objc.h或者这个目录中的其他头文件中找到.下面是从objc.h中摘录的一段,定义了一些数据类型: // objc.h typedef struct objc_class *Class; //结构体指针 typedef struct objc_object { Class isa; } *id; typedef

OC 中 load 方法和 initialize 方法的异同

+ (void)load; 当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息 load 方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子类, 子类优先于分类 load 方法不会被类自动继承 + (void)initialize; 也是在第一次使用这个类的时候会调用这个方法

iOS开发——OC篇&常用问题解答(二)

101.编译错误:ld: library notfound for -lPods 当项目中使用了 cocoaPods 时,经常出现此错误(通常是 release 的时候). 这是由于 pod install 后,cocoaPods 会创建一个新的 workspace.你必须关闭项目并重新打开.问题即可解决. 102.为什么 iOS 的时间总是比真实时间慢8小时 例 如,一个北京时间"2014-4-4 22:00"(字符串),需要转换成 NSDate.字符串转换成 NSDate 一般是通

iOS开发-OC篇-NSDate

今天总结一下OC中NSDate的一些简单的用法,注意可不是NSData哦! NSDate的使用 1> NSDate初始化方法 //获取当前时间 NSDate * date = [NSDate date]; //返回以当前时间为基准,然后过了secs秒的时间 [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]; //返回以lastDate为基准,然后过了secs秒的时间 [NSDate dateWithTimeInterval:60 * 60 *

iOS开发-OC篇-NSSet,NSNumber

最近回顾了OC的一些基本知识,发现确实遗忘了很多重要的东西,今天整理了一些小的知识点,和大家分享一下. iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作. 1.NSNumber包装类 1>  普通初始化 NSNumber * num1 = [[NSNumber alloc] initWithInt:20]; NSNumber * num2 = [NSNumber numberWithChar:'a']; 2>字面量初始化 NSNumber * num3 =