本次记录源自此篇博文,对文中作者提到的知识编码学习,只是NSLog不同。本人采用NSLog(@"(常量)");
简介
在iOS中,load、initialize两个方法是比较特殊的存在。说它们特殊,是因为一般在程序中,不会使用这两个方法。如果想要做一些比较hack的事情(例如:method swizzing) 就需要用到它们了。
执行时机
load 在class、class category等 首次import的时候会默认执行。如果定义了class, 但在项目中并没有import ,那么load不会被执行。
initialize在首次对class 发送消息时执行。即使import class, 如果没有对class 发送消息,initialize不会被执行。
注意
- 重写load、initialize 时,不需要调用super的load、initialize。
- import class、class category、class subClass 、class supClass时,每个类的load都会被执行。
- 手动调用 load的时候,如果有category, 会调用category的load,此处相当于 send message。
- initialize 会默认调用super的initialize,而load不会。
- 在category中重写initialize,那对class 发送消息,执行category的initialize,不再执行class initialize。







网友评论