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;
    }

  • 相关阅读:
    禅道使用-升级
    Maven 的这 7 个问题你思考过没有?
    https及证书
    Linux下查看/管理当前登录用户及用户操作历史记录
    禅道的安装
    Linux添加/删除用户和用户组
    Spring注解@Component、@Repository、@Service、@Controller区别 .
    myeclipse,eclipse打开当前文件所在文件夹
    java开发常用工具
    Django环境搭建之安装mod_wsgi模块
  • 原文地址:https://www.cnblogs.com/CoderHong/p/10887688.html
Copyright © 2011-2022 走看看