initialize方法和init区别详解

来源:互联网 发布:python socket 10022 编辑:程序博客网 时间:2024/05/18 00:44


原创帖子,转载请注明出处:http://blog.csdn.net/sbvfhp/article/details/47857851


1、定义Father类


////  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类


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


0 0