面向对象(对象初始化)
为对象分配空间
[类名 alloc];
初始化方法与对象初始化
使用NSObject
提供的init
方法虽然可以完成初始化,但由于它只是完成最基本的初始化,因此对象的所有成员变量依然为0。
重写init
方法,可以加入任意的自定义处理代码对属性执行初始化
例:
在.h文件中定义属性
@property (nonatomic ,copy) NSString * name;
@property (nonatomic ,assign) int age;
@property (nonatomic ,copy) NSString * address;
在.m文件中
//重写init方法
- (id) init{
//调用父类的init方法执行初始化,将初始化得到的对象赋值给self对象
//如果self不为nil,则表明父类的init方法初始化成功
if(self = [super init]){
//对该对象的_name、_age、_address赋初始值
self->_name = @"名字";
self->_age = 500;
self->_adderss = @"地址";
}
return self;
}
便利的初始化方法
例:
在.h文件中定义
@property (nonatomic , copy) NSString * brand;
@property (nonatomic , copy) NSString * model;
@property (nonatomic , copy) NSString * color;
//定义一个 initWithBrand:model:方法,完成自定义初始化
- (id) initWithBrand:(NSString *) brand model:(NSString *) model;
//定义一个initWithBrand:model:color:方法,完成自定义初始化
- (id) initWithBrand:(NSString *) brand model:(NSString *) model color:(NSString *) color;
在.m文件中
//重写init方法,完成自定义初始化
- (id) init{
//调用父类的init方法执行初始化,将初始化得到的对象赋值给self对象
//如果self不为nil,则表明父类的init方法初始化成功
if(self = [super init]){
//对该对象的_brand、_model、_color赋初始值
self->_brand = @"奥迪";
self->_model = @"Q5";
self->_color = @"黑色";
}
return self;
}
//实现initWithBeand:model:方法,完成自定义初始化
- (id) initWithBrand:(NSString *) brand model:(NSString *)model{
//调用父类的init方法执行初始化,将初始化得到的对象赋值给self对象
//如果self不为nil,则表明父类的init方法初始化成功
if(self = [super init]){
//对该对象的_brand、_model、_color赋初始值
self->_brand = brand;
self->_model = model;
self->_color = @"黑色";
}
}
//实现initWithBeand:model:color:方法,完成自定义初始化
- (id) initWithBrand:(NSString *) brand model:(NSString *)model color:(NSString *) color{
//调用本类的initWithBeand:model:方法执行初始化,将初始化得到的对象赋值给self对象
//如果self不为nil,则表明initWithBeand:model:方法初始化成功
if(self = [self initWithBrand:brand model:model]){
//对该对象的_color赋初始值
self->_color = color;
}
return self;
}