【OC学习-7】2种常用的对象初始化方法以及方法的具体写法
2014-09-02 20:38
531 查看
我们在创建一个新的对象时,用到初始化,但由于这个初始化函数没有特别编写,所以没什么效果,现在我们就来看看这个初始化函数怎么书写。
如果没有经过我们自己的初始化函数赋值的话,那么一般在创建一个对象后,会一个个赋值,如下:
#import <Foundation/Foundation.h>
#import "ASStudent.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
ASStudent * zhang=[[ASStudent alloc]init];
[zhang setName:@"tom"]; //通过setName函数赋值
[zhang setAge:18]; //通过setAge函数赋值
NSLog(@"%@,%d",[zhang name],[zhang age]);
}
return 0;
}
有了初始化之后,有些变量的值在创建时就可以指定。
(1)用init函数初始化——因为是直接从父类继承过来的,所以不需要在.h文件声明,可直接在.m里面写内容
//上面alloc给对象分配空间后,就开始初始化,发现有如下的初始化函数,则调用如下函数
-(id)init{
if (self=[super init]) { //用父类初始化函数初始化继承父类的变量,并把这个地址赋值给self
name=@"tom";
age=18;
}
return self; //最终还是返回一个地址
}
(2-1)还有一种常用的方法,是先定义一个初始化变量最多的指定初始化函数,不指定变量值,在创建对象时再指定具体值——需要先在.h里声明,然后在.m中写内容,和写普通函数(方法)类似
//在ASStudent.h里先声明
-(id)initWithName:(NSString *)aName Sid:(NSString *)aSid Age:(int)aAge;
(2-2)在上面指定初始化函数的基础上,可以衍生出拥有不同参数的初始化函数,这样以后需要用哪个初始化函数就可以随意用。——需要先在.h里声明,然后在.m中写内容,和写普通函数(方法)类似
//ASStudent.h里,只初始化一个参数的函数(方法)
-(id)initWithName:(NSString *)aName;
如果没有经过我们自己的初始化函数赋值的话,那么一般在创建一个对象后,会一个个赋值,如下:
#import <Foundation/Foundation.h>
#import "ASStudent.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
ASStudent * zhang=[[ASStudent alloc]init];
[zhang setName:@"tom"]; //通过setName函数赋值
[zhang setAge:18]; //通过setAge函数赋值
NSLog(@"%@,%d",[zhang name],[zhang age]);
}
return 0;
}
有了初始化之后,有些变量的值在创建时就可以指定。
(1)用init函数初始化——因为是直接从父类继承过来的,所以不需要在.h文件声明,可直接在.m里面写内容
//上面alloc给对象分配空间后,就开始初始化,发现有如下的初始化函数,则调用如下函数
-(id)init{
if (self=[super init]) { //用父类初始化函数初始化继承父类的变量,并把这个地址赋值给self
name=@"tom";
age=18;
}
return self; //最终还是返回一个地址
}
(2-1)还有一种常用的方法,是先定义一个初始化变量最多的指定初始化函数,不指定变量值,在创建对象时再指定具体值——需要先在.h里声明,然后在.m中写内容,和写普通函数(方法)类似
//在ASStudent.h里先声明
-(id)initWithName:(NSString *)aName Sid:(NSString *)aSid Age:(int)aAge;
//然后在ASStudent.m里写具体内容 //格式和init一致,只不过多了几个形参 -(id)initWithName:(NSString *)aName Sid:(NSString *)aSid Age:(int)aAge{ if (self=[super init]) { name=aName; sid=aSid; age=aAge; } return self; }
//最后在main.m中创建对象的时候就初始化赋值,即可 ASStudent * zhang=[[ASStudent alloc]initWithName:@"andy" Sid:@"110" Age:19];
(2-2)在上面指定初始化函数的基础上,可以衍生出拥有不同参数的初始化函数,这样以后需要用哪个初始化函数就可以随意用。——需要先在.h里声明,然后在.m中写内容,和写普通函数(方法)类似
//ASStudent.h里,只初始化一个参数的函数(方法)
-(id)initWithName:(NSString *)aName;
//ASStudent.m写具体内容 //这里面调用了上面有三个参数的指定初始化函数,只不过把里面的其中一个参数Name的赋值权利给了我们下面的这个函数 -(id)initWithName:(NSString *)aName{ return [self initWithName:aName Sid:nil Age:25]; }
//当然,在main.m里初始化也是调用新的初始化函数(方法) ASStudent * zhang=[[ASStudent alloc]initWithName:@"jack"];
相关文章推荐
- 【OC学习-20】NSSet集合对象初始化以及常用操作方法归纳
- 【OC学习-19】NSDictionary字典对象的初始化以及常用操作方法归纳
- 【OC学习-18】NSArray的初始化以及常用数组操作方法简单归纳
- OC数组对象NSArray的常用方法 以及oc数组中常用的遍历
- OC中对象类型以及其常用方法
- 深入学习Hibernate4_05hibernate中对象的四种状态(临时状态,持久化状态,游离状态,删除状态),以及常用方法的介绍
- java学习之路--java对象(1)--重点String类的常用方法
- 【Objective-C】OC中NSNumber数字对象的常用处理方法
- Objective-C中基本数据烦类型与对象数据类型相互转换的方法(OC中NSString的常用API的基础应用3)
- 图解Java对象初始化过程以及方法调用
- 图解Java对象初始化过程以及方法调用
- hibernate常用的接口和类的方法以及持久化对象的状态变化
- 【Objective-C】OC中NSNumber数字对象的常用处理方法
- 黑马程序员-我的第六篇学习日记:OC方法的使用,对象方法与函数的区别
- iOS开发OC基础:OC数组对象NSArray的常用方法 推荐
- iOS category中的所谓属性 和 从xib初始化对象的方法 以及类扩展
- window对象的常用属性和方法以及对象
- 黑马程序员——javascript语言的方法以及部分对象的使用学习日志
- XMLHttpRequest对象的几种状态和几个重要属性以及常用的方法
- JavaSE_65_对象的构造方法以及初始化