标签:blog io ar 文件 2014 log on c 学习
我们在创建一个新的对象时,用到初始化,但由于这个初始化函数没有特别编写,所以没什么效果,现在我们就来看看这个初始化函数怎么书写。
如果没有经过我们自己的初始化函数赋值的话,那么一般在创建一个对象后,会一个个赋值,如下:
#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; //最终还是返回一个地址 }
//在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"];
标签:blog io ar 文件 2014 log on c 学习
原文地址:http://blog.csdn.net/weisubao/article/details/39010783