OC 构造方法

2017-09-19  本文已影响0人  李琪_59dc

1. new方法实现原理

  1. 自动调用构造方法,完整的创建一个可用的对象:Person *p=[Person new];

可以把new方法拆开如下:
(1) 调用类方法+alloc分配存储空间,返回未经初始化的对象
Person* p1=[Person alloc];
(2) 调用对象方法-init进行初始化(指针类型变为空,基本类型变成0),返回对象本身
Person *p2=[p1 init];
(3) 以上两个过程整合为一句:Person *p=[[Person alloc] init];
[Person new]等价于[[Person alloc]init]

2. 构造方法

以init开头的构造方法都必须先用父类初始化:if ( self=[super init] );

-(instancetype)init{
    /*self 是一个指针,表示当前调用该方法的对象本身*/
    /*super是一个关键字,用来调用父类方法*/
    self=[super init];   //最基本的初始化操作
    if(self){
       //要初始化的内容
    }
    return self;  //判断父类初始化成功后,返回当前对象的地址 return self;
}

例子:

@interface Person:NSObject{
    NSString* _name;
}
//为一个对象进行初始化的方法
-(instancetype)initWithName:(NSString*)name;   //显示声明
@end

@implementation Number
-(instancetype)initWithName:(NSString*)name{
    self=[super init];   //先调用父类构造方法
    if(self){                  //自定义的构造方法,进行子类内部成员变量的初始化
        _name=name;
    }
}
@end
上一篇下一篇

猜你喜欢

热点阅读