欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

构造方法 init 初始化 对象 oc

程序员文章站 2024-01-14 22:55:04
...

为什么要重写init方法,重写有什么好处和作用:一般用来什么事情:

1.可以用来创建对象,这个是最基本的;配合alloc使用;

2.init什么时候会被执行,当对象被创建的时候;

3.好处和作用:

网友解答:可以在你实例化的时候提供更多参数以便实现对对象的快速赋值。重写init可以让你创建的对象出来就是成品。而不重写的话,还需要你对该对象的属性进行赋值。

4.解析一下self = [super init];为什么每次重写init方法都要写上这一句:

网友解答:self 为时候,系统已经生成了对象并分配了存储空间,在调用[super init]是为了初始化父类对象,在父类对象初始化过程序中有可能失败(如网络资源调用失败)或者返回其它对象(这个取决于你的父类了),这个时候的self其实也可以继续执行子类对象的初始化工作,因为都是同一个对象,只不过在你调用父类的某一些功能可能不起作用或者报错。

 

 

  1. 完整的创建一个可用的对象:要以下几个步骤;
    1. 分配存储空间 +alloc
    2. 初始化;-init
  2. 构造方法是用来初始化对象的方法,如init,
  3. 构造方法一定是对象方法,以-号开头;
  4. //实现对每个Person对象创建出来,它的_age都是10;
  5. 重写init方法是在implementation里面;
  6. 重写-init方法
@implementation Person
- (id)init
{
self = [super init ];当前对象self
if (self !=nil)//如果对象初始化成功,才有必要进行接下来的初始化
{
_age = 10;
}
return self;//返回一个已经初始化完毕的对象;
}
@end

 上面的代码可以写成:

- (id)init
{
if (self = [super init])
{
_age = 10;
}
return self;
}

 xcode自动帮我们生成的,都是private

  1. 重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值;
  2. 重写构造方法的注意点;
    1. 先调用父类的构造方法[super init]
    2. 在进行子类内部成员变量的初始化;
  3. 任何对象在初始化自己之前,会调用父类的初始化方法;
  4. 因为父类里面的属性也需要初始化;所以用[super init]来初始化父类的属性,如isa指针;初始化isa指针后,isa指针就会指向当前的对象;
  5. if (self != nil)因为这里的self在前面已经初始化了,self是指针,self如果初始化了之后,会指向内存地址;不会是0,如果是0,则初始化失败;如果初始化成功,就对它进行赋值;
- (id) init
{
if(self = [super init])
{
_age = 100;
}
return self;
}

 

  1. 重写init方法,需要调用父类的init方法;
  2. NSObject是最基本的类,没有父类;
posted on 2016-04-08 21:29 williamliuwen 阅读(...) 评论(...) 编辑 收藏

上一篇: OC: array

下一篇: