您的位置:首页 > 移动开发 > IOS开发

initialize方法和init区别详解

2016-09-21 16:03 330 查看
1、定义Father类

[objc] view
plain copy

//  

//  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
plain copy

//  

//  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之后。

转载自:http://blog.csdn.net/sbvfhp/article/details/47857851

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  initialize init iOS