iOS load方法和initialize方法的异同
对于OC中的类来说,在runtime中会有两个方法被调用: +load
+initialize
这两个方法看起来都是在类初始的时候调用的,但其实还是有一些异同,从而可以用来做一些行为。
+load
首先,load方法是一定会在runtime中被调用的,只要类被添加到runtime中了,就会调用load方法,所以我们可以自己实现laod方法来在这个时候执行一些行为。 而且有意思的一点是,load方法不会覆盖。也就是说,如果子类实现了load方法,那么会先调用父类的load方法,然后又去执行子类的load方法。同样的,如果分类实现了load方法,也会先执行主类的load方法,然后又会去执行分类的load方法。所以父类的load会执行很多次,这一点需要注意。而且执行顺序是 类 -> 子类 ->分类。而不同类之间的顺序不一定。
+initialize
与load不同的是,initialize方法不一定会执行。只有当一个类第一次被发送消息的时候会执行,注意是第一次。什么叫发送消息呢,就是执行类的一些方法的时候。也就是说这个方法是懒加载,没有用到这个类就不会调用,可以节省系统资源。 还有一点截然相反,却更符合我们预期的就是,initialize方法会覆盖。也就是说如果子类实现了initialize方法,就不会执行父类的了,直接执行子类本身的。如果分类实现了initialize方法,也不会再执行主类的。所以initialize方法的执行覆盖顺序是 分类 -> 子类 ->类。且只会有一个initialize方法被执行。
转载于:https://juejin.im/post/5a7026376fb9a01c9c1f5041
iOS load方法和initialize方法的异同相关推荐
- OC 中 load 方法和 initialize 方法的异同
+ (void)load; 当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息 load 方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子类, 子类优先于 ...
- Loader的load方法和loadBytes方法LoaderContext参数
(1)在看代码的时候还发现一个以前没有这么注意的问题,也mark一下. 关于Loader的load方法和loadBytes方法LoaderContext参数的问题.. 要加载某个SWF到自己的安全域内 ...
- Java中sleep()方法和wait()方法的异同点
前言 前几篇文章讲过wait()系列方法后,我们来对比看看它和sleep()方法有什么异同点.如果不了解wait()方法也没关系,文章中我会附上涉及到的文章.我们先从sleep()方法讲起,彻底搞清楚 ...
- IOS开发基础Object-C( 04)—构造方法和description方法
在上一篇博客中,我们简单介绍了一下点语法和self,相信大家对点语法以及self有了一点的了解,点语法的本质就是调用get方法和set方法.那么今天我们再来介绍一下构造方法和description. ...
- iOS-class方法和objc_getClass方法
根据上一篇博客iOS-class.object_getClass.objc_getClass.objc_getMetaClass区别的研究发现,发现主要还是class方法和objc_getClass方 ...
- JS中的call()方法和apply()方法用法总结
1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...
- python 推迟运行_一文看懂Python的time模块sleep()方法和strftime()方法
概述 今天主要介绍一下Python的time sleep()方法和strftime()方法. 一.Python time sleep()方法 Python time sleep() 函数推迟调用线程的 ...
- JS服务器端开发基础篇(Array.slice方法和splice方法)
Array.slice方法和splice方法在众多的JS数组中属于比较复杂的一个方法,而且容易记混.搜索网络上很多资料都没有发现系统的总结.特别归纳如下,不完全处还希望各位批评指正. 一.slice ...
- ThinkPHP 中M方法和D方法的具体区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
最新文章
- 点云数据向图像数据转换(附源码)
- R语言与数据分析(1) 数据分析流程、数据挖掘、数据可视化
- HDU 2149 Public Sale (博弈)
- 基于jsp的教师科研工作量_基于jsp+mysql的JSP教师科研信息管理系统
- 快速求幂(Quick Exponentiation)
- MVC数据的注册及验证简单总结
- js原生事件委托的实现
- linux中变量的使用
- C#:将图片文件上传到数据库两种方法。
- Html学习手册(W3CSchool.chm)
- JAVA栅栏密码解密程序
- HTML 多选框
- 微信车主服务代扣的坑
- python入门书籍推荐,看这篇文章就够,请!
- 计算机组成原理云南大学,云南大学信息学院计算机方向
- 用PGP实现加密和解密全过程
- VS中使用Qt方法详解
- Qt给字体设置下划线
- 【STM32】两轮自平衡小车学习笔记1
- 为什么INT_MIN不是直接写成-2147483648