Objective - C基础: 第四天 - 7.类的加载过程
来源:互联网 发布:matlab 结构体数组 编辑:程序博客网 时间:2024/06/10 14:19
在前面, 我们知道了类的本质其实也是一个对象, 是Class类型, 那么类的加载过程是如何的呢?? 其实类的加载过程非常简单,先加载父类然后再加载子类, 而且每一个类就只会加载一次, 下面让我们来看看~
例子:
#import <Foundation/Foundation.h>@interface Person : NSObject+ (void)load;@end@implementation Person+ (void)load{ NSLog(@"Person-----load");}@end@interface Student : Person+ (void)load;@end@implementation Student+ (void)load{ NSLog(@"Student-----load");}@endint main(){ return 0;}在main()函数里, 并没有调用所设定的类方法, load这个类方法是系统自动调用的, 所以不需要我们自行去调用.
结果:
2015-01-24 14:14:45.451 07-类的本质[10689:1160313] Person----load2015-01-24 14:14:45.452 07-类的本质[10689:1160313] Student----load
从结果, 我们就看的出来, 系统先加载Person, 然后再加载Student.
那如果我们需要监听它是什么时候加载呢? 还有一个方法叫做+ (void)initialize, 下面让我们来看看:
#import <Foundation/Foundation.h>@interface Person : NSObject+ (void)load;@end@implementation Person+ (void)load{ NSLog(@"Person-----load");}+ (void)initialize{ NSLog(@"Person-initialize");}@end@interface Student : Person+ (void)load;@end@implementation Student+ (void)load{ NSLog(@"Student-----load");}+ (void)initialize{ NSLog(@"Student-initialize");}@endint main(){ [[Student alloc]init]; return 0;}
结果:
2015-01-24 14:24:18.588 07-类的本质[10729:1164951] Person----load2015-01-24 14:24:18.589 07-类的本质[10729:1164951] Student----load2015-01-24 14:24:18.589 07-类的本质[10729:1164951] Person-initialize2015-01-24 14:24:18.590 07-类的本质[10729:1164951] Student-initialize
如果我们把main()函数里的改一下:
int main(){[[Person alloc]init];return 0;}
那么结果就是:
2015-01-24 14:25:17.760 07-类的本质[10738:1165590] Person----load2015-01-24 14:25:17.761 07-类的本质[10738:1165590] Student----load2015-01-24 14:25:17.761 07-类的本质[10738:1165590] Person-initialize
原因其实很简单, 在main()函数中, 如果我们有加载到子类的话, 那么initialize方法就是从父类一直加载到子类, 但如果只用到父类的话, 那么子类就不会被加载.
load方法详解: 当程序启动的时候, 就会加载一次项目中所有的类, 类加载完毕后就会调用+ (void)load方法.
好了, 这次我们就讲到这里, 下次我们继续~~~
0 0
- Objective - C基础: 第四天 - 7.类的加载过程
- Objective - C基础: 第四天 - 8.类别的加载过程
- Objective - C基础: 第四天 - 6.类的本质
- Objective - C基础: 第四天 - 2.重写init方法
- Objective - C基础: 第四天 - 3.自定义构造方法
- Objective - C基础: 第四天 - 9.description方法
- Objective - C基础: 第四天 - 1.id类型的基本认识
- Objective - C基础: 第四天 - 4.类别的基本认识之一
- Objective - C基础: 第四天 - 5.类别的基本认识之二
- Objective - C基础: 第四天 - 10.SEL类型的基本认识
- objective-c 第四天 字典
- Objective-C类 基础
- Objective - C基础: 第二天 - 5.类方法的练习
- objective-c的常用基础类
- objective C 基础 类的组成
- Objective-C 类的基础程序
- Objective-C基础-类方法的学习
- 学习Objective-C--第四天
- 一个失败者的自我反省
- Mysql启动失败问题解决
- JavaScript快速入门(三)——JavaScript语句
- mysql用户创建及权限分配
- GC学习笔记
- Objective - C基础: 第四天 - 7.类的加载过程
- sqlserver命令行操作
- Ibox 4412 重启 usb不识别 解决
- 配置开机时将CentOS网口设置成promisc模式
- MVC应用程序包含组件介绍
- 获取checkbox选中的值
- Windows Server 2008远程桌面端口更改方法
- 万兆eth口光纤对接,但指示灯始终不亮。
- java--异常