zoukankan      html  css  js  c++  java
  • 构造方法

    对象的构造方法

    创建一个对象, 我们直接通过new方法就可以创建一个OC实例对象。这个+new方法是继承NSObject获得的。其实创建对象+new方法分为两个过程的。

    // 调用+aalloc分配存储空间
    CHPerson *p = [CHPerson alloc];
    // 调用-init初始化
    p = [p init];

    +alloc方法是分类内存空间,并将内存空间的地址返回,此时的对象内存空间是不可直接使用,需要调用-init进行初始化。

     开发中创建对象一般不直接使用+new方法去创建对象,因为通常需要在对象的初始化做一些操作。这也就需要自定义构造方法了。

     自定义构造方法

    通常自定义无参的构造方法写发都是如下:

    // 重写init方法
    - (instancetype)init  {
        if(self = [super init]) { // 确保初始化成功
    
        }
        return self;
    }

    在OC中任何类都是继承NSObject,其实初始化-init方法都是继承NSObject而拥有的,所以初始化的通过都是父类的-init方法完成的,因此必须调用 [super init]

    [super init]返回的就是当前对象本身,为了保证初始化没问题,添加了if判断。这样做的目的是涉及到运行时

    下面通过一张图来更好展示为什么之类自定构造方法先调用 [super init]设计原理

     自定义有参构造方法

    在初始化对象做一些操作是需要外界的传入参数,因此我们可以自定义有参的构造方法

    自定有参构造方法注意细节:

    1.返回值是instancetype

    2.方法名以initWith开头

    - (instancetype)initWithName:(NSString *)name {
        if (self = [super init]) {
            self.name = name;
        }
        return self;
    }

  • 相关阅读:
    java面试系列<1>——java基础
    Netty 面试必备知识点
    Redis 面试必备知识点
    MySQL 面试必备知识点
    肝了一个半月的 Java 项目快速开发脚手架:Chewing
    线上BUG:MySQL死锁分析实战
    2021-07-01阅读小笔记:Spring ioc 之组件扫描
    2021-06-13:G1垃圾回收器
    Dubbo原理剖析 之 @DubboReference.version设置为*
    2021-04-09阅读小笔记:JDK8中的一等公民和Stream小概念
  • 原文地址:https://www.cnblogs.com/CoderHong/p/10887688.html
Copyright © 2011-2022 走看看