美文网首页八天学会OC
第04天OC语言(07):new实现原理

第04天OC语言(07):new实现原理

作者: liyuhong | 来源:发表于2017-07-21 17:32 被阅读18次
  • 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?

使用另外一种方式 初始化一个对象
SomeClass *object = [[SomeClass alloc] init];

学习前:你必须会什么?

new方法是用来干什么的,内部做了什么操作,如何使用new类方法创建一个对象
1.new方法是用于 一个类创建一个对象的类方法
2.内部做了三件事情

     1.开辟存储空间 + alloc 方法
     2.初始化所有的属性(成员变量) - init方法
     3.返回对象的地址 offx16

3.SomeClass *object = [SomeClass new];



一、本章笔记
 一、new 做了三件事情
     1.开辟存储空间 + alloc 方法
     2.初始化所有的属性(成员变量) - init方法
     3.返回对象的地址
 二、alloc 
    做了什么事情 : 1.开辟存储空间, 2将所有的属性设置为0 3.返回当前实例对象的地址
 三、int 
    1.初始化成员变量,但是默认情况下 init的实现 是什么都没有做 2.返回初始化后的实例对象的地址
 四、为什么要用alloc init 初始化对象
    建议大家以后创建一个对象 使用 alloc init ,这样可以统一编码格式
 注意 : alloc返回的地址, 和 init返回地址 是同一个地址
二、code
main.m
#pragma mark 07-new实现原理
#pragma mark 概念
/*
 一、new 做了三件事情
     1.开辟存储空间 + alloc 方法
     2.初始化所有的属性(成员变量) - init方法
     3.返回对象的地址
 二、alloc 
    做了什么事情 : 1.开辟存储空间, 2将所有的属性设置为0 3.返回当前实例对象的地址
 三、int 
    1.初始化成员变量,但是默认情况下 init的实现 是什么都没有做 2.返回初始化后的实例对象的地址
 四、为什么要用alloc init 初始化对象
    建议大家以后创建一个对象 使用 alloc init ,这样可以统一编码格式
 注意 : alloc返回的地址, 和 init返回地址 是同一个地址
 */
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{

    /*
     new 做了三件事情
     1.开辟存储空间 + alloc 方法
     2.初始化所有的属性(成员变量) - init方法
     3.返回对象的地址
     */
//    Person *p = [Person new];
    
    // alloc 做了什么事情 : 1.开辟存储空间, 2将所有的属性设置为0 3.返回当前实例对象的地址
    Person *p = [Person alloc];
    // init 1.初始化成员变量,但是默认情况下 init的实现 是什么都没有做 2.返回初始化后的实例对象的地址
    Person *p2 = [p init];
    
    // 注意 : alloc返回的地址, 和 init返回地址 是同一个地址
    NSLog(@"p1 = %p,p2 = %p",p,p2);// p1 = 0x100204dd0,p2 = 0x100204dd0
#warning 为什么要用alloc init 初始化对象
    // 建议大家以后创建一个对象 使用 alloc init ,这样可以统一编码格式
    Person *p3 = [[Person alloc]init];
    
    return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>

@interface Person : NSObject

@end
>>>.m
#import "Person.h"

@implementation Person

@end
day04_07_01(官方alloc).png day04_07_02(官方init)1.png day04_07_02(官方init)2.png

相关文章

  • 第04天OC语言(07):new实现原理

    不要等到明天,明天太遥远,今天就行动。 须读:看完该文章你能做什么? 使用另外一种方式 初始化一个对象SomeCl...

  • iOS--OC底层原理文章汇总

    OC底层原理01—alloc + init + new原理OC底层原理02—内存对齐OC底层原理03— isa探究...

  • OC阶乘计算

    OC中的阶乘算法,原理就是递归。在OC中也可以用c语言来实现。

  • OC底层原理08-objc_msgSend方法消息慢速查找(二)

    iOS--OC底层原理文章汇总[/p/14911da92f74] 本章内容是基于上一章OC底层原理07--Runt...

  • Foundation对象和Core Foundation对象有什

    Foundation对象是OC对象,使用OC语言实现;Core Foundation对象是C对象,使用C语言实现。...

  • new方法实现原理

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

  • new实现原理

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

  • 第14题- new操作符内部实现原理

    面试题目: new 操作符内部实现原理是什么? 答案解析: new 操作符经常被用到,用面向对象语言们通用的观点来...

  • 整理面试题

    一、OC语言基础知识剖析 (1)UI卡顿掉帧的原因 (1)什么是KVO? KVO实现原理?如何手动添加KVO? <...

  • Block(一)

    基本原理 Block 也是OC的对象 Objective-C 是对C 语言的扩展,block的实现是基于指针和函数...

网友评论

    本文标题:第04天OC语言(07):new实现原理

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