//
// main.m
// Code0316
//
// Created by 唐帅 on 16/3/16.
// Copyright © 2016年 tang. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Person:NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)int age;
@end
//这种做法是在用代码做UI时用到的
@interface Person()
@end
@implementation Person
//对构造函数进行初始化
-(instancetype)init
{
if(self)
{
self.name =@"JAVA";
self.age = 10;
}
return self;
}
//自定义构造方法实现
//接受一个参数的做法
-(id)initWithName:(NSString *)name
{
// self为什么要赋值为[super init],简单来说是为了防止父类的初始化方法relaease掉了self指向的空间,并重新alloc了一块空间(可能性很小)。这时的话,[super message]语境中的self,即子类是实例。
if(self == [super init])
{
self.name = name;
}
return self;
}
//自定义构造方法同时初始化两个参数的做法
-(id)initWithName:(NSString *)name andAge:(int)age
{
if(self == [super init])
{
self.name = name;
self.age = age;
}
return self;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person * p = [[Person alloc]init];
Person *p2 = [[Person alloc]initWithName:@"C++"];
p2 = [[Person alloc]initWithName:@"OC" andAge:5];
NSLog(@"%@,,,%d",p.name,p.age);
NSLog(@"%@,,%d",p2.name,p2.age);
}
return 0;
}