---恢复内容开始---函数
咱们知道,在函数中实例化一个对象,大多数会同时进行初始化,如 Person *p =[ [Person alloc]init];this
此时已经进行了初始化,使用init方法,那么咱们能不能重写init方法呢,让它能够在初始化的时候直接赋值,能够从内部赋值也能够从外部赋值。咱们先把代码写出来而后进行分析:对象
-(id)init
{
if (self = [super init]) {资源
self.age = 30;
}
return self;
}
it
在这块代码中,除去self.age = 30;该结构是构造方法的固定模式。在这里咱们不得不说起 self,self能够用来调用方法,类方法和实例方法均可以用self调用,那么self是什么?咱们不须要知道self是什么,由于self时刻在变,一句话,当前的方法是谁在调用,self就是谁。self相似于C++和Java中的this,你们能够参照理解。咱们来实例化一个对象,P在此处的代码中,self指的是 p ,由于age是p的属性。这块代码,-(id),指的是任何类型,假设咱们不知道返回值self是什么类型,咱们也没必要担忧,由于-(id)能够指代任何类型。if(self = [super init]),括号内是对self进行初始化,括号外是if,意思是初始化成功才向后执行,失败则直接返回,系统回收已分配的资源。几乎没有初始化失败的状况,但咱们为了不失败,仍是要进行判断。在随后对年龄进行赋值,年龄为30,在这个方法中,咱们是从内部对年龄进行初始化,直接在.m文件中直接实现,不须要在.h文件中先声明。在主函数实例化对对象的时候,对象的年龄就是30,而不须要另外赋值。这是内部初始化,还有外部初始化。外部初始化须要在.h文件中声明,而后在.m文件中实现。咱们来看具体代码:方法
//声明文件
-(id)initWithName:(NSString *)aNme andAge:(NSInteger)aAge;初学者
//实现阅读
-(id)initWithName:(NSString *)aNme andAge:(NSInteger)aAge{return
self.name = aName;
self.age = aAge;
}
咱们在主函数中进行实例化对象的时候,选择咱们自定义的方法,由咱们手动控制须要初始化的值从而完成初始化,这就是外部赋值。本人是初学者,你们有问题均可以进行评论咱们共同解决。感谢阅读。
---恢复内容结束---