[置顶] initialize方法和init区别详解
分类: IOS开发 2015-08-22 11:31 205人阅读 评论(0) 收藏 举报
原创帖子,转载请注明出处:http://blog.csdn.net/sbvfhp/article/details/47857851
1、定义Father类
[objc] view plaincopy
//
// Father.m
//
// Created by 李建 on 15/8/22.
// Copyright (c) 2015年 李建. All rights reserved.
//
#import "Father.h"
@implementation Father
+(void)initialize
{
NSLog(@"Father中的 initialize 方法执行");
}
-(Father *)init
{
NSLog(@"Father中的 init 方法执行");
return [super init];
}
@end
实例化后运行效果如下图:
上图可以看出,Father实例化三次,initialize方法执行一次,init方法会被执行三次
2、我们定义Son类,继承Father类
[objc] view plaincopy
//
// Son.h
//
// Created by 李建 on 15/8/22.
// Copyright (c) 2015年 李建. All rights reserved.
//
#import "Father.h"
@interface Son : Father
@end
实例化后运行效果如下:
从以上图中可以看出,
1>Father类实例化3次,initialize执行一次,init执行3次
2>Son继承自Father,当Son实例化一次的时候,其它父类中的initialize执行一次,init方法执行一次
3、我们针对Father类中的打印信息做一个调整
接下来我们再看看运行效果
initialize不是init
在程序运行过程中,它会在你程序中每个类调用一次initialize。这个调用的时间发生在你的类接收到消息之前,但是在它的父类接收到initialize之后。
