博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oc语言中的构造方法
阅读量:5135 次
发布时间:2019-06-13

本文共 1022 字,大约阅读时间需要 3 分钟。

一 构造方法的调用

 完整的创建一个可用的对象:Person *p=[Person new];

  New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(返回分配的对象);2)使用init方法来对对象进行初始化。

  可以把new方法拆开如下:

       1.调用类方法+alloc分配存储空间,返回未经初始化的对象

          Person *p1=[person  alloc];

       2.调用对象方法-init进行初始化,返回对象本身

      Person *p2=[p1 init];

   3.以上两个过程整合为一句:

      Person *p=[[Person alloc] init];

说明:init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,一减号开头。默认初始化完毕后,所有成员变量的值都为0。

二 构造方法的使用注意事项

(1)子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候应该首先对从父类继承而来的成员变量先进行初始化。

(2)原则:先初始化父类的,再初始化子类的。

(3)重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。

(4)注意点:

        1>先调用父类的构造方法[super init];       if(self = [super init]){// 具体代码}

        2>再进行子类内部成员变量的初始化。

 

三 自定义构造方法

  规范:

    (1)一定是对象方法,以减号开头

    (2)返回值一般是instancetype类型

    (3)方法名一般以initWith开头

  例子:

   - (instancetype)initWithDict:(NSDictionary *)dict

    {

      if(self = [super init])

      {

        [self setValuesForKeyWithDictionary:dict];

      }

      return self;

    }

    最后切记,自己的事情自己做,当然不是说你,是说这些个类,也就是说父类的事情交给父类的方法去做,子类的事情交给子类的方法去处理,也就是简单的低耦合道理。

 

 

 

转载于:https://www.cnblogs.com/pengpengzhang/p/4575226.html

你可能感兴趣的文章
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
生产阶段Webpack打包【基础打包】
查看>>
Cortex M3/M4 学习摘要(二)
查看>>
C#时间的味道——任时光匆匆我只在乎你
查看>>
虚拟路径
查看>>
js键盘相关知识总结
查看>>
Python中数据类型转换
查看>>
structed streaming基础---跳过的坑
查看>>
hadoop05---进程线程
查看>>
HTTPS实战之单向验证和双向验证
查看>>
遍历List集合的三种方法
查看>>
分治算法-快速排序
查看>>
Bootstrap框架(基础篇)之列表,表格,表单
查看>>
grep, sed 和 awk 学习总结
查看>>
Django引入静态文件
查看>>
中期蒙混过关,后期要早点起步4.13-4.19
查看>>
redisson笔记
查看>>
c语言运算优先级与结合方向的问题
查看>>
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "FileSize"
查看>>
html常用标签总结
查看>>