这一节也没有什么要和大家细说的,主要就是讲讲OC篇里的实例变量问题,内容一点都不复杂,下面进入主题!

一、实例变量初始化方法

1、使用实例setter方法默认初始化方法+setName:xxxsetAge:xxx

2、使用实例功能类方法,默认初始化方法+setName:xxxage:xxx

3、使用实例初始化方法initWith开头的方法

4、使用构造器类名+With…

要用PersonStudent两个类作为例子

1)使用实例setter方法(比较麻烦)

2)使用实例功能类方法赋值(比第一个稍微简单)

3)使用实例初始化方法initWith开头的方法(经常被用到)

注:大家要注意几点:

1)自写初始化函数需要以initWith开头必须形如initWith…大小写要注意

2)一个类里可有多个初始化方法,不过只能有一个“指定初始化”方法,指定初始化方法是在调用任意一个初始化方法的时候都会默认被调用的初始化方法,意思就是指定初始化方法是在其它初始化方法里面被调用的,每一个初始化方法内部必须调用指定初始化方法,是通用的原则。

那么和上面的例子一样,做下修改,添加一个初始化方法:

h文件声明:

-(void)initWithStudentID:(NSString*)studentIDscore:(float)score;

m文件实现:

-(void)initWithStudentID:(NSString*)studentIDscore:(float)score
{
self=[selfinitWithName:NILsex:NILage:NILstudentID:studentIDscore:score
}

3)注意继承的初始化的写法

4)self和其它语言的this指针很相似,指向当前的对象,如果在方法里面类调用就指代当前类,对象调用就指代当前对象。
5、便利构造器方法(便利构造器书写规则)

类方法开头以类名开头类名首字母小写后续驼峰法,属于类方法用+号

如上例定义便利构造器

+(void)studentWithName:(NSString*)namesex:(NSString*)sexage:(int)agestudentID:(NSString

*)studentIDscore:(float)score
{
Student*stu=[[selfalloc]studentWithName:namesex:sexage:agestudentID:studentID

score:score];

}

那么这个时候,创建对象的方法就变成了

intmain
{
Student*stu=[StudentstudentWithName:@"xiaoA"sex:@"Man"age:16studentID:@"2008-02"

score:97]


return0;
}

利用这种方法,创建对象就方便多了,根本不需要每次手动申请空间,调用alloc函数

一个初始化函数里面只能有一个superinit类的方法,这样一来就能确保多个入口一个出口了,以免麻烦!