您的位置:首页 > 移动开发 > Objective-C

Object-c------重写构造方法

2016-05-02 20:33 253 查看
//
//  main.m
//  constructor
//
//  Created by zhaogang on 16/5/2.
//  Copyright © 2016年 zhaogang. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

// 构造方法:用来初始化对象的方法,是个对象方法,-开头
// 重写构造方法的目的:为类让对象创建出来,成员变量就会有一些固定的值
/*
重写构造方法的注意点
1. 先调用父类的构造方法([super init])
2. 再进行子类内部成员变量的初始化
*/

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
// Person *p = [Person new];

/*
完整的创建一个可用的对象
1.分配存储空间  +alloc
2.初始化       -init
*/

// 1.调用+alloc分配存储空间
// Person *p1 = [Person alloc];
// 2.调用-init进行初始化
// Person *p2 = [p1 init];

// 创建一个对象
Person *p1 = [ [Person alloc] init];

// 每个Person对象创建出来,他的_age都是10

}
return 0;
}


Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property int age;

@end


Person.m

#import "Person.h"

@implementation Person

// 重写-init方法
- (instancetype)init
{
// 1.一定要调用super的init方法:初始化父类中的成员变量和其他属性
// 因为首先调用了alloc方法,所以返回的是当前对象,所以这里的父类就是NSObject
// 而init返回的是一个当前对象 self拥有父类里面初始化的属性
//self = [super init];

// 2.如果对象初始化成功,才有必要进行接下来的初始化
//if(self != nil)
if( self = [super init])
{
// 初始化成功
_age = 10;
}

// 3.返回一个已经初始化完毕的对象
return self;

}

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