一 构造方法的调用

完整的创建一个可用的对象: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

oc语言中的构造方法相关推荐

  1. 2015-10-13 OC语言中的复合

    2019独角兽企业重金招聘Python工程师标准>>> 复合,就是对象之间的组合,它不限制对象的个数,但至少有两个对象. 复合时,将要复合的对象(类实例化)的头文件导入被复合的类的头 ...

  2. OC语言中的便利初始化函数和便利构造器

    便利遍历初始化函数与便利构造器(以Student类为例): main函数 Student.h(声明) ................... Student.m(实现) ............... ...

  3. c语言中O空字符,OC语言中字符串的使用

    可变字符串 //插入字符串 NSMutableString*string1 =[NSMutableStringstringWithString:@"字符串"]; [string1i ...

  4. oc中写c语言的方法,OC语言description步骤和sel

    OC语言description方法和sel OC语言description方法和sel 一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) ( ...

  5. Objective-c:OC语言简介、类与对象

    Objective-c 简介 1.1980年代初,Brad Cox发明了Objective-C: 2.1985年乔布斯成立了NeXT公司,创建了NextSTEP,使用Objective-C开发的用户界 ...

  6. 24、OC语言的动态性学习(Runtime)

    文章目录 一.动态类型 二.动态绑定 三.动态加载 四.消息机制的基本原理 消息查找阶段 动态方法解析 消息转发 消息快转发 消息慢转发 消息发送以及转发机制的总结 重写respondsToSelec ...

  7. java语言中声明布尔型_【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  8. Python中的构造方法

    在Java等语言中都有构造方法[进行对象的创建及初始化]这个东东,示例代码如下: public class Student {//成员变量private String name;private int ...

  9. oc语言和c语言,C语言及OC语言初期学习心得

    2015-7-22,周三 经过一个星期C语言的学习,对基础知识语法已经有了一定的了解和认识.同时通过这三天对OC语言的学习,更加了解编程语言都是相融相通的.虽然 OC语言的语法和之前接触的C,JAVA ...

最新文章

  1. DeepMind 的2017:有 AlphaGo,更有社会责任
  2. CheckStyle
  3. Binary Watch二进制时间
  4. 学习笔记 Keras:常见问题
  5. jQuery(function(){...})与(function($){...})(jQuery)的“兄弟”情结
  6. 《阿里云SRE技术期刊》2020年10月【电子版】
  7. Office365开发系列——开发一个全功能的Word Add-In
  8. 表单新增元素与属性(control、placehoulder、list、AutoComplete、pattern、SelectionDirection、indeterminate属性)
  9. C++中智能指针的原理、使用、实现
  10. JavaScript变量声明+数据类型+数字格式+操作符+进制
  11. delete kubectl pod_kubectl delete
  12. 阿里巴巴集团CEO张勇和校招生面对面,畅聊阿里的技术路线
  13. Chrome中播放时视频编码为.h264和音频编码为acc,采样率为48000,双通道的视频文件时音画不同步
  14. ST-Link系列usb驱动器下载
  15. VMware Workstation 虚拟机下载及安装的详细步骤
  16. android 加载第三方so文件,Uni-app 以Module方式开发Android插件,引入第三方资源包so文件,但无法读取...
  17. jQuery水平手风琴图片轮播切换
  18. 【Cesium】添加polygon边界线
  19. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
  20. python 战舰_Python战舰:获取用户输入的他们想要多少艘战舰

热门文章

  1. npm install全局安装的模块路径自定义管理
  2. js 将input、textarea、Select等控件替换成标签(span)
  3. Oracle 隐含参数的查询
  4. 简书粉丝列表老bug
  5. 12平键标准尺寸规格表_郑州花纹板加工规格尺寸表
  6. 开源GIS(二十)——CAD数据添加属性转GIS数据
  7. Dialog高仿Toast实现
  8. Xna支持中文显示方法归纳
  9. Android多线程--AsyncTask
  10. mysql备份-a是什么_MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离