Objective - C基础: 第四天 - 8.类别的加载过程
来源:互联网 发布:centos进入图形界面 编辑:程序博客网 时间:2024/06/10 12:34
补充一个加载过程的知识点, 那就是类别的加载过程, 类别的加载过程有一些特殊, 废话不多说, 直接上例子:
#import <Foundation/Foundation.h>@interface Person : NSObject+ (void)load;@end@implementation Person+ (void)load{ NSLog(@"Person-----load");}+ (void)initialize{ NSLog(@"Person-initialize");}@end@interface Person (XMN)+ (void)load;@end@implementation Person (XMN)+ (void)load{ NSLog(@"Person(XMN)-----load");}+ (void)initialize{ NSLog(@"Person(XMN)-initialize");}@endint main(){ return 0;}
结果:
2015-01-24 14:44:37.224 07-类的本质[10784:1172004] Person----load2015-01-24 14:44:37.225 07-类的本质[10784:1172004] Person(XMN)-----load
刚刚我们也说了, load方法在程序启动的时候就会把项目中所有的类都加载一遍, 这个就没什么好探讨的, 下面继续:
int main(){ [[Person alloc]init]; return 0;}
结果:
2015-01-24 14:46:41.691 07-类的本质[10792:1173167] Person----load2015-01-24 14:46:41.692 07-类的本质[10792:1173167] Person(XMN)-----load2015-01-24 14:46:41.692 07-类的本质[10792:1173167] Person(XMN)-initialize
在这里, 就只会调用类别的initialize方法, 就算Person本来就又inititalize方法, 也会覆盖掉原来的方法, 这一点就比较特殊, 我们需要留意一下
再重复一次:
1. 在程序启动时, 就会加载项目中所有的类和类别, 而且加载后会调用每个类和类别的load方法, 并且只会调用一次.
2. 当第一次调用某个类的时候, 就会调用当前类的initialize方法, 如果该类有类别, 并且有initialize方法, 那么就只会使用类别的initialize方法.
3. 先加载父类, 后加载子类, (先调用父类的+load方法, 再调用子类的+load方法)
4. 先初始化父类, 再初始化子类(先调用父类的+initialize方法, 再调用子类的+initialize方法)
好了, 这次我们就说到这里, 下次我们继续~~
0 0
- Objective - C基础: 第四天 - 8.类别的加载过程
- Objective - C基础: 第四天 - 7.类的加载过程
- Objective - C基础: 第四天 - 4.类别的基本认识之一
- Objective - C基础: 第四天 - 5.类别的基本认识之二
- 类别(objective-c基础笔记)
- 【Objective-C基础】类别Category
- Objective - C基础: 第四天 - 6.类的本质
- objective-c category类别的使用
- objective-c类别catagory的作用?
- Objective-C - 分类(类别)的应用 Category
- Objective - C基础: 第四天 - 2.重写init方法
- Objective - C基础: 第四天 - 3.自定义构造方法
- Objective - C基础: 第四天 - 9.description方法
- Objective-c类别
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Objective-c类别
- Category 类别 -Objective-C
- 我所理解的设计模式(C++实现)——备忘录模式(Memento Pattern)
- 我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)
- Android Studio 下自动注释(自定义作者,类作用等)
- HTML5 流布局
- 我所理解的设计模式(C++实现)——迭代器模式(Iterator Pattern)
- Objective - C基础: 第四天 - 8.类别的加载过程
- the file “XXX” could not be opened because you don't have permission to view it
- CF GYM 100548 International Collegiate Routing Contest(2014ACM西安现场赛Problem I)
- 我所理解的设计模式(C++实现)——解释器模式(Interpreter Pattern)
- angular依赖注入
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- 高精度模板
- 我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
- HBase如何合理设置客户端Write Buffer