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;
    }
  • 相关阅读:
    Generate Parentheses
    Length of Last Word
    Maximum Subarray
    Count and Say
    二分搜索算法
    Search Insert Position
    Implement strStr()
    Remove Element
    Remove Duplicates from Sorted Array
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/yaowen/p/7416788.html
Copyright © 2011-2022 走看看