欢迎来到天天文库
浏览记录
ID:51332908
大小:2.49 MB
页数:14页
时间:2020-03-10
《Objective C-对象的创建及初始化.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、对象创建、初始化11年7月12日星期二对象创建的基本步骤使用OC创建对象需要两个步骤:1、内存分配(Allocation):为新的对象动态分配一段内存地址。2、初始化(Initialization):为这段空间填上合适的初始值。只有这两个步骤都完成以后,这个对象才能够真正的使用。两个步骤在代码中是分别完成的,但是通常我们将它们合起来一次完成:Person*person1=[[Personalloc]init];11年7月12日星期二初始化方法初始化方法的命名一般以init开头;初始化方法在对象创建的时候
2、给实例变量一些初始值。Person*p=[[Personalloc]initWithName:@”zhangsan”andAge:24];相当于:Person*p=[[Personalloc]init];[psetName:@”zhangsan”];[psetAge:24];11年7月12日星期二例子一下面是一个简单的对init方法进行重写的例子:-(id)init{if(self=[superinit]){NSLog(@”Iamininitmethod”);}returnself;}if(self=[
3、superinit])等价于self=[superinit];if(self!=nil)self=[superinit]的作用:赋值并检测赋值是否成功11年7月12日星期二详细解释[superinit]父类中定义的变量通过向super请求初始化方法得到初始化;向super请求初始化方法使继承树关系更加明了父类的变脸会比子类的变量优先得到初始化。11年7月12日星期二例子二下面是使用一个传入参数来进行初始化的初始化方法:-(id)initWithName:(NSString*)aNameandAge:(i
4、nt)aAge{if(self=[superinit]){name=[aNameretain];age=theAge;}returnself;}11年7月12日星期二初始化方法的返回值id或者本类强类型(类名)注意:不要写错为void。任何方法,如果不写返回值类型,默认为id类型。11年7月12日星期二self和superself:执行方法的对象本身,或者是类对象super:父类对象,通常用于调用父类的方法注意:在类方法中,self代表的是类对象,在实例方法中代表调用方法的实例。11年7月12日星期二s
5、elf的错误例子+(Person*)personWithName:(NSString*)aName{self=[[Personalloc]init];[selfsetName:aName];return[selfautorelease];}11年7月12日星期二self正确的例子+(Person*)personWithName:(NSString*)aName{Person*person1=[[Personalloc]init];[person1setName:aName];return[person1
6、autorelease];}11年7月12日星期二指定初始化方法指定初始化方法只有一个;指定初始化方法应当被其他所有自定义的初始化方法所调用。或者说自己定义的方法最终都会调用到指定初始化方法。如果你要实现一个指定初始化方法,此方法必须调用到父类的指定初始化方法。11年7月12日星期二便利构造器在cocoa中,有一些方法通过把内存分配过程和初始化过程组合起来完成一次性新对象的创建,我们把这些方法称为便利构造器。它们的命名通常以”className”开头,并且为类方法。例如:+(id)stringWithS
7、tring:(NSString*)str11年7月12日星期二单例(singleton)单例指一个唯一的,由全局共享的对象+(Person*)defaultPerson{staticPerson*person=nil;if(person==nil){person=[[Personalloc]init];}returnperson;}注意:返回单例的方法的返回值应当是强类型的。11年7月12日星期二作业描述一个公司系统要求:公司可以成立部门,也可以雇佣员工,并且在做这个操作的时候需要由后台输出(比如:某部
8、门雇佣了某个员工)其中一个类要编写至少两个初始化方法,并指明你定义的指定初始化方法(注释一下即可)为每个类增加一个便利构造器给公司类提供一个单例方法。11年7月12日星期二
此文档下载收益归作者所有