OC中的initialize方法
来源:互联网 发布:淘宝客推广链接格式 编辑:程序博客网 时间:2024/05/01 18:03
initialize不是init,运行时间的行为之一就是initialize。虽然看起来有点像大家常见的init,但是他们并不相同。在程序运行过程中,它会在你程序中每个类
调用一次initialize。这个调用的时间发生在你的类接收到消息之前,但是在它的父类接收到initialize之后。
举个例子,比如一个叫做Father的类:
@implementation Father+(void) initialize { NSLog(@"Father initialize");}-(void) init { NSLog(@"Father init");}@end
我们在这里记录initialize和init调用的时间。
我们建立三个Father对象的实例:
NSLog(@"Hello, World!");Father *father1 = [[Father alloc] init];Father *father2 = [[Father alloc] init];Father *father3 = [[Father alloc] init];
看一下记录:
Hello, World!Father initializeFather initFather initFather init
我们可以看到,虽然我们创建了3个Father的实例,但是initialize仅仅被调用了一次。我们也可以看到,直到我们创建第一个Father的实例之前,initialize才被调用。
但是如果Father有一个子类的话,比如我们建一个Father的子类叫做Son。
@interface Son : Father {}@end
注意Son这个类并没有实现initialize方法。如果我们同样运行这个程序,但是加上一个Son的实例:
NSLog(@"Hello, World!");Father *father1 = [[Father alloc] init];Father *father2 = [[Father alloc] init];Father *father3 = [[Father alloc] init];Son *son = [[Son alloc] init];@end
我们再来看一下记录
Hello, World!Father initialize Father initFather initFather initFather initializeFather init@end
我们看到了4个Father的init和2个Father的initialize方法。这是怎么回事呢?
看来如果一个子类没有实现initialize方法,那么他会调用父类的initialize方法,我们在Father的initialize类中记录一下类名,这样可以看得更清楚:
+(void) initialize { NSLog(@"Father initialize class:%@",[self class]);}
现在看就清楚多了:
Hello, World!Father initialize class:FatherFather initFather initFather initFather initialize class:SonFather init
0 0
- OC中的initialize方法
- OC中的load和initialize方法
- 细说OC中的load和initialize方法
- [iOS]细说OC中的load和initialize方法
- 关于IOS OC 中的load 和 initialize 方法
- OC load 和 initialize 方法
- OC- +load方法 和 +initialize方法
- OC中initialize&& load && init方法
- oc类初始化方法load和initialize
- OC中initialize方法和init方法的区别
- OC中load方法和initialize方法的异同
- [基础]OC的initialize和init方法的区别
- OC中类的load和initialize方法
- OC中的方法
- OC语言中的方法
- OC中的排序方法
- OC中的description方法
- OC 中的方法重载?
- 我确信蜘蛛侠来过
- Codeforces 650C Table Compression (并查集+拓扑排序)
- 第13周项目1—分数类中的运算符重载 (1)
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
- Navicat for mysql 远程连接 mySql数据库10061错误问题
- OC中的initialize方法
- java 通过request获取ip 在通过ip获取地址
- Maven项目目录结构显示方式
- Linux驱动学习(3-设备节点-手动创建)
- Image经典图片压缩方法
- 第15课:Spark Streaming源码解读之No Receivers彻底思考
- JS框架类型
- Markdown 新手指南
- Word一些功能的使用方法