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…..对对象进行初始化以及赋值。
相关文章推荐
- OC学习日记03-类和对象(二)OC语言中的方法 、设置器与访问器、便利初始化函数与便利构造器
- c++高级---C++类构造函数初始化列表以及对象成员的构造
- 【OC学习-20】NSSet集合对象初始化以及常用操作方法归纳
- oc语言的特点以及对象初始化
- java 构造函数 成员函数初始化顺序 以及多态的构造函数的调用顺序
- static 变量和static 构造函数 以及对象初始化顺序
- 深入java (类)对象初始化,类构造函数的调用以及多态(java中多态的实现机制以后补充)
- 【OC学习-7】2种常用的对象初始化方法以及方法的具体写法
- OC-方法、设置器 与 访问器、便利初始化函数 与 便利构造器
- OC初始化函数和便利构造器
- OC中实例变量初始化方法,setter方法以及便利构造器的不同
- java 构造函数 成员函数初始化顺序 以及多态的构造函数的调用顺序
- 【OC学习-19】NSDictionary字典对象的初始化以及常用操作方法归纳
- c++ string类的基本构造函数以及对象初始化实例
- OC中关键字@property,便利构造器,对象初始化的综合使用
- OC中的方法、设置器与访问器、便利初始化函数及便利构造器的相关问题
- c++中子对象的初始化可在复合类的构造函数的函数体内进行吗?还是子对象的初始化只能在初始化列表中进行?
- 定义圆类Circle,数据成员有半径radius,成员函数有默认构造函数(默认半径为10)、构造函数、计算圆面积、圆周长以及输出函数,分别构造默认对象和半径为15的对象,输出各对象的周长与面积。
- 面向对象之构造函数(可让程序运行前初始化一些东西)、函数(方法)重载
- OC对象初始化-便利的初始化方法