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之后。
[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区别详解
- initialize方法和init区别详解
- Objective C类方法load和initialize的区别
- “ASP.desktopmodules_flashimageshow_editflashimagerotator_ascx.FrameworkInitialize()”: 没有找到适合的方法来重写
- Maganto错误-Cannot initialize the indexer process的解决方法
- Orchard源码分析(5.1):Host初始化(DefaultOrchardHost.Initialize方法)
- Maganto错误-Cannot initialize the indexer process的解决方法
- Cannot Initialize Data Bindings 问题的解决方法
- Maganto错误-Cannot initialize the indexer process的解决方法
- ESRI.Arcgis.esrisystem.AoInitializeClass编译错误解决方法
- .net程序中Configuration system failed to initialize错误及解决方法
- Objective-C的Initialize初始化方法研究
- javascript 谁才是initialize方法
- Objective-C的Initialize初始化方法研究
- Objective-C的Initialize初始化方法研究
- jbpm4.4 会签中出现could not initialize proxy - no Session解决方法
- 'InitializeCulture' is not a member of 'XXXX'. 解决方法 -- ASP.NET
- failed to lazily initialize a collection of role: no session or session was closed (Hibernate) 解决方法(延迟加载问题)
- Objective-C的Initialize初始化方法研究
- 创建物理卷出现如下错误 Can't initialize physical volume的解决方法