首页 > 代码库 > 【OC学习-7】2种常用的对象初始化方法以及方法的具体写法
【OC学习-7】2种常用的对象初始化方法以及方法的具体写法
我们在创建一个新的对象时,用到初始化,但由于这个初始化函数没有特别编写,所以没什么效果,现在我们就来看看这个初始化函数怎么书写。
如果没有经过我们自己的初始化函数赋值的话,那么一般在创建一个对象后,会一个个赋值,如下:
#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学习-7】2种常用的对象初始化方法以及方法的具体写法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。