Objective-c - 构造方法(init方法)和init方法的重写
来源:互联网 发布:终端如何退出python 编辑:程序博客网 时间:2024/05/21 00:14
/*
1> 创建一个对象,那么就调用这个类的new方法.
2> new方法是一个类方法,new方法做的事情:
1>在堆区开辟空间存储对象,这个对象中会声明它对应的类中定义的所有属性(注意是属性,没有方法),还有一个isa指针,指向对应的在代码区中的类
2>初始化这个对象内部属性的值
1,基本数据类型初始化为:0
2,OC的指针初始化为:nil即:(0X0)不指向任何地址
3,如果是C指针初始化为:NULL (0X0)
3>返回这个对象在堆区的地址
3> new方法的底层:
new方法的底层是调用了alloc方法和init方法.
alloc方法是一个类方法,这个方法做的事情是:创建对象.
init方法是一个对象方法,这个方法做的事情是:初始化这个对象.(初始化就是为对象的属性赋默认值.)
4> 所以创建对象YYPerson *xiaoming = [YYPerson new];等价于YYPerson *xiaoming = [[YYPerson alloc]init];
因为new方法内部就是先调用类方法alloc,再调用对象方法init.
5> init方法,我们叫做构造方法.
init方法做的事情是:初始化对象,为对象的属性赋默认值(基本数据类型初始化为0/oc指针初始化为nil/c指针初始化为NULL).创建对象必须使用init方法初始化以后才可以使用,否则就有可能会产生各种各样的问题.
6> 重写init方法.
如果我们希望对象创建出来以后,对象的属性的值不是默认值0/nil/NULL,而是我们期望的值,那么我们就可以重写init方法.
1, 先调用父类的init方法.
2, init方法有返回值,返回值是当前对象,调用init方法有可能会执行失败,执行失败返回值就是nil.调用父类的init方法,将这个方法的返回值赋值给self.
3, 判断父类的init方法是否执行成功,如果成功,再去按照自己期望的方式初始化自己的属性.
4, 返回当前对象,self.
7> 需要重写init方法的情况.
1, 当对象创建出来的时候,希望对象的属性的值是我们指定的值,而不是0/nil/NULL.
2, 如果有一段代码,希望在对象创建的同时执行,那么我们就可以将这段代码写在init方法中.
8> 重写init方法的规范.
必须先调用父类的init方法,并复制给self,并判断是否成功执行.
- (instancetype)init
{
if(self = [super init])//说明父类的init方法执行成功
{
初始化子类自己的属性;
}
return self;
}
*/
#import <Foundation/Foundation.h>
//人类的声明
@interface YYPerson : NSObject
@property NSString *name;
@property int age;
- (void)sayHi;
@end
//人类的实现
@implementation YYPerson
- (void)sayHi
{
NSLog(@"大家好,我叫%@,今年%d岁了!",_name, _age);
}
- (instancetype)init//重写init方法
{
if(self = [superinit])
{
self.name =@"小明";
self.age =18;
}
return self;
}
@end
int main(int argc,const char * argv[]) {
//创建对象
YYPerson *xiaoming = [[YYPersonalloc]init];//此处调用了重写之后的init方法,为对象的属性赋值了期望的值.
//调用方法
[xiaoming sayHi];
return 0;
}
- Objective-c - 构造方法(init方法)和init方法的重写
- 重写构造方法init与自定义构造方法的详解
- 重写init方法(构造方法)
- 转:重写init方法(构造方法)
- objective-c init方法的写法
- Objective - C基础: 第四天 - 2.重写init方法
- 黑马程序员——构造方法之init的重写和自定义构造方法
- Objective-C中,重写init方法为什么要self = [super init]?
- Objective-C中,重写init方法为什么要self = [super init]
- 重写 - init 方法总结
- 重写init方法
- Objective-C学习笔记(二十二)——初始化方法init的重写与自定义
- 构造方法init
- python继承和重写init方法
- python继承和重写init方法--实例
- OC中init方法的重写和自定义
- GenericServlet的init方法---init()--
- 重写OC中的init方法
- 让lua的gc替我们回收c的堆变量
- Til the Cows Come Home (Digkstra邻接矩阵裸模板)
- 枚举-生成元3.5Digit generator
- I2C
- Python练习实例16
- Objective-c - 构造方法(init方法)和init方法的重写
- SpringBoot Scala敏捷Web开发
- GOF23的一些总结(十五)
- 前端自学vs跟大神系统学?你看着办
- 聊天机器人学习笔记整理系列:POMDP-based Statistical Spoken Dialogue System: a Review
- I - Red and Black
- mongodb简单测试增删改查
- javaWeb 地图定位插件 高德地图定位 基于浏览器
- jpa详解