zoukankan      html  css  js  c++  java
  • oc31--new实现

    //
    //  main.m
    //  new方法实现原理
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
    
        /*
         new做了三件事情
         1.开辟存储空间  + alloc 方法
         2.初始化所有的属性(成员变量) - init 方法
         3.返回对象的地址
         */
        Person *p = [Person new];
        
        // alloc做了什么事情: 1.开辟存储空间(alloc都是在堆里面创建的区域,) 2.将所有的属性设置为0 3.返回当前实例对象的地址
        Person *p1 = [Person alloc];
        // 1.初始化成员变量, 但是默认情况下init的实现是什么都没有做 2.返回初始化后的实例对象地址
        Person *p2 =  [p1 init];
        // [[Person alloc] init];
        
        // 注意: alloc返回的地址, 和init返回的地址是同一个地址
        NSLog(@"p1 = %p, p2 = %p", p1, p2); //p1 = 0x100202630, p2 = 0x100202630
        
        // [[Person alloc] init]; == [Person new];
        // 建议大家以后创建一个对象都使用 alloc init, 这样可以统一编码格式
        Person *p3 = [[Person alloc] init];
        return 0;
    }
  • 相关阅读:
    轮播无缝
    项目开发的注意
    再聊移动端页面的适配
    如何在Vue项目中使用vw实现移动端适配
    移动端适配文章
    vue-cli 配置flexible px2rem-loader安装配置
    vuex复习笔记
    vue-router复习笔记
    vue-cli 笔记
    内置组件 -slot讲解
  • 原文地址:https://www.cnblogs.com/yaowen/p/7416788.html
Copyright © 2011-2022 走看看