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