Objective-C中,重写init方法为什么要self = [super init]

来源:互联网 发布:建筑设计平面图软件 编辑:程序博客网 时间:2024/05/18 01:12

 if(self == [super init])   {

//初始化代码

}

        我们需要知道面向对象继承的概念,一个子类从父类继承,获得相关的属性和方法,所以在子类的初始化方法中,必须首先调用父类的初始化方法,以实现父类相关资源的初始化。

         网上有网友总结的很好:

1.[super init]的作用:

面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化。

2.self 为什么要赋值为[super init]:

简单来说是为了防止父类的初始化方法release掉了self指向的空间并重新alloc了一块空间。这时的话,[super init]可能alloc失败,这时就不再执行if中的语句。

0 0