您的位置:首页 > 其它

OC中对象的初始化(便利初始化函数以及便利构造函数)

2016-08-04 21:53 239 查看

在OC中对象初始化的两种方法:

类名 *对象名 = [[类名 alloc] init]; 或者
类名 *对象名 = [类名 new];
在创建对象时,先用alloc给对象分配存储空间,然后按照类中定义的实例变量的结构建立这块内存。alloc是继承于NSOjbect的类方法,alloc方法将这块建造好的内存中的实例变量初始化,整形初始化为0,浮点型初始化为0.0,字符型初始化为'\0',布尔型初始化为null,指针初始化为nil。alloc方法返回对象的指针。
为了在初始化的时候,给相应变量赋值,则可以使用便利初始化函数,其代码如下:


便利初始化函数以及便利构造器

//创建一个Student对象,其属性包含:姓名,年龄,爱好

//main函数:
Student *student = [[Student alloc]init]


通过在主函数上设置以上代码,可以将对象student进行初始化,但属性的值都为空。

为了让属性在初始化的时候都能得到相应的赋值,这里引用了便利初始化函数以及便利构造函数。

//interface函数:
//property语法
@property (nonatomic, strong)NSString *name;
@property (nonatomic, assign)NSInteger age;
@property (nonatomic, strong)NSString *hobby;
//便利初始化函数,汽车中类型后面的name,age,hobby为函数的参数
-(id)initWithName:(NSString *)name
Age:(NSInteger)age
hobby:(NSString *)hobby;
//便利构造器对象名With方法名:(参数类型)参数
+(id)studentWithName:(NSString *)name
Age:(NSInteger)age
hobby:(NSString *)hobby;

//implementation文件中实现以上声明的两个方法。
-(id)initWithName:(NSString *)name
Age:(NSInteger)age
hobby:(NSString *)hobby;
{
if(self = [super init]) //重写init方法
{
self.name = name;
self.age = age;
self.hobby = hobby;
}
return self;
}
+(id)studentWithName:(NSString *)name
Age:(NSInteger)age
hobby:(NSString *)hobby;
{
Student *student = [[Student alloc] initWithName:name
Age:age
Hobby:hobby];
}
//在main函数中调用
Student *student = [[Student alloc]initWithName:@"Gene"
Age:23
Hobby:@"打游戏"];


以上代码片段,先是在interface文件中定义三个变量,在声明便利初始化函数以及便利构造器的方法。通过implementation文件对前面声明的方法进行方法实现。方法-(id)init…是实例方法,self表示指向student对象的指针。最后主函数通过调用方法studentWithName…..对对象进行初始化以及赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  便利初始化函数
相关文章推荐