美文网首页
new方法实现原理

new方法实现原理

作者: Sunday_David | 来源:发表于2018-04-24 11:23 被阅读0次
本小节知识:
  1. 【掌握】new方法实现原理

1.new方法实现原理

  • 完整的创建一个可用的对象:Person *p=[Person new];
  • new方法的内部会分别调用两个方法来完成3件事情:
    • (1)使用alloc方法来分配存储空间(返回分配的对象);
    • (2)使用init方法来对对象进行初始化。
    • (3)返回对象的首地址

This method is a combination of alloc and init. Like alloc, it initializes the isa instance variable of the new object so it points to the class data structure. It then invokes the init method to complete the initialization process.

  • 可以把new方法拆开如下:

    • (1)调用类方法+alloc分配存储空间,返回未经初始化的对象Person *p1=[person alloc];
    • (2)调用对象方法-init进行初始化,返回对象本身 Person *p2=[p1 init];
    • (3)以上两个过程整合为一句:Person *p=[[Person alloc] init];
  • 说明:

    • alloc 与 init合起来称为构造方法,表示构造一个对象
    • alloc 方法为对象分配存储空间,并将所分配这一块区域全部清0

The isa instance variable of the new instance is initialized to a data structure that describes the class; memory for all other instance variables is set to 0.

  • init方法是初始化方法(构造方法),用来对象成员变量进行初始化,默认实现是一个空方法。

An object isn’t ready to be used until it has been initialized. The init method defined in the NSObject class does no initialization; it simply returns self.

  • 所以下面两句的作用是等价的
Person *p1 = [Person new];
Person *p = [[Person alloc] init];
  • iOS 程序通常使用[[类名 alloc] init] 的方式创建对象,因为这个可以与其他initWithXX:...的初始化方法,统一来。代码更加统一

相关文章

  • new方法实现原理

    本小节知识: 【掌握】new方法实现原理 1.new方法实现原理 完整的创建一个可用的对象:Person *p=[...

  • Objective-C基础学习之new方法实现原理

    1.new方法实现原理 完整的创建一个可用的对象:Person *p=[Person new]; new方法的内部...

  • new方法实现原理

    //问题1:创建对象时,alloc做了什么事情?init做了什么事情?答:alloc做了三件事:1.开辟内存空间2...

  • new方法实现原理

    new做了三件事情1.开辟存储空间 + alloc 方法2.初始化所有的属性(成员变量) - init 方法3....

  • OC 构造方法

    1. new方法实现原理 自动调用构造方法,完整的创建一个可用的对象:Person *p=[Person new]...

  • 手写实现系列

    实现 new 方法 Object.create 的实现原理 实现数据绑定 深拷贝 防抖函数 节流函数 冒泡排序 快速排序

  • 11-new方法实现原理、构造方法、类工厂方法

    new方法实现原理 new做了三件事情1.开辟存储空间 + alloc 方法2.初始化所有的属性(成员变量) -...

  • 2.new、apply、bind、call的模拟实现

    1.new的模拟实现 2.apply的模拟实现 原理很简单,将函数赋值成context的方法,调用函数,删除方法,...

  • Python单例模式

    用__new__实现 关于__new__的内部原理,请点击 为了让子类不继承父类的__new方法,子类也应该调用o...

  • new实现原理

    假如让你实现一个new的功能,首先我们需要搞清楚:new关键字都做了什么工作? 在浏览器控制台打印一下结果: 从结...

网友评论

      本文标题:new方法实现原理

      本文链接:https://www.haomeiwen.com/subject/hqndlftx.html