zoukankan      html  css  js  c++  java
  • 构造方法 init 初始化 对象 oc

    为什么要重写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是最基本的类,没有父类;
  • 相关阅读:
    Java学习笔记-Java中的常用类
    Java学习笔记-Java中的常用类
    Java学习笔记-泛型
    GeoIP简介与资源,定位经纬度,获取用户IP
    【插代码】手机号码所在地查询,引用代码
    最后一个对象属性后边不要加豆号的bug,血淋淋的教训啊,模块化开发IE7下的严重错误,养成好习惯
    CSS自定义滚动条样式
    css实现input文本框的双边框美化
    在函数内部定义的变量加与不加var的区别,匿名函数和有名函数内声明变量的区别
    js定时器关闭,js定时器停止,一次关闭所有正在运行的定时器,自定义函数clearIntervals()一次关闭所有正在运行的定时器
  • 原文地址:https://www.cnblogs.com/williamliuwen/p/5370053.html
Copyright © 2011-2022 走看看