美文网首页
1-OC对象本质

1-OC对象本质

作者: 今晚打老虎_9527 | 来源:发表于2018-07-18 12:48 被阅读0次
        NSObject* obj = [[NSObject alloc] init];
        Student* student = [[Student alloc]init];
        
        NSString* str = @"hello";
        
        student->_no = 25;
        student->_age = 30;
        
        NSLog(@"%zd",class_getInstanceSize([NSObject class]));
        
        NSLog(@"%zd",malloc_size((__bridge const void *)(obj)));
        
        NSLog(@"%zd",class_getInstanceSize([Student class]));
        
        NSLog(@"%zd",malloc_size(CFBridgingRetain(student)));
        
        NSLog(@"%zd",class_getInstanceSize([NSString class]));
        
        NSLog(@"%zd",malloc_size(CFBridgingRetain(str)));
        
        struct Student_IMPL * stu = (__bridge struct Student_IMPL *)student;
        
        NSLog(@"no is %d, age is %d",stu->_no,stu->_age);

1. lldb命令

  • p(print)
image.png
  • po(print object)
image.png
  • x(memory read)
image.png
  • memory write
image.png

2. 获取NSObject对象占用内存大小

  • NSObject实例对象的成员变量大小
#import <objc/runtime.h>
NSLog(@"%zd",class_getInstanceSize([NSObject class]));     //8
  • NSObject实例对象占用内存大小
#import <malloc/malloc.h>
NSLog(@"%zd",malloc_size((__bridge const void *)(obj)));    //16

3. 内存对齐

  • 结构体的最终大小必须是最大成员大小的倍数,iOS都是分配16个字节的倍数

相关文章

  • 1-OC对象本质

    1. lldb命令 p(print) po(print object) x(memory read) memory...

  • 1 OC使用原理 - 1-OC 对象的本质

    Objective-C的本质 我们平时编写的Objective-C代码,底层实现其实都是C\C++代码 将OC代码...

  • OC 与 Swift

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(中)—— OC对象的种类

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(下)—— 详解isa&supercl

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象原理探究(下)

    介绍正文前,我们思考一个问题,什么是对象?或者说OC对象的本质是什么? 对象本质以及拓展 在探索oc对象本质前,先...

  • iOS底层 - 对象的本质,方法的本质

    对象的本质是结构体 方法的本质是消息发送 对象的本质 首先有一个SPPerson对象 我们知道OC底层是C和C++...

  • block 笔记

    block本质是OC对象(封装了函数调用以及调用环境的OC对象) 本质

  • OC 对象本质

    一个 NSObject 对象占用多少内存? 对象的 isa 指针指向哪里? OC的类信息存放在哪里? 第一个问题就...

  • OC 对象本质

    1 . 编写的Objective-C代码,其底层都是由c/c++ 代码实现的。OC语言 —> c/c++ 语言—>...

网友评论

      本文标题:1-OC对象本质

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