iOS-Class

2020-03-12  本文已影响0人  e297b14c9e53

面试题

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

Objective-C的本质

实时查看内存数据
2个容易混淆的函数
#import <objc/runtime.h>
class_getInstanceSize([NSObject class]);
#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj);

LLDB

常用的LLDB指令

OC对象的分类

instance
class
meta-class
Class objectMetaClass = object_getClass([NSObject class]); // Runtime API
以下代码获取的objectClass是class对象,并不是meta-class对象
Class objectClass = [[NSObject class] class];
查看Class是否为meta-class
import "objc/runtime.h"
BOOL result = class_isMetaClass([NSObject class]);

isa

isa指针
class对象的superclass指针
@interface Student : Person
@interface Person : NSObject
meta-class对象的superclass指针
isa、superclass总结

Class的结构

isa指针
objc4源码下载
窥探struct objc_class的结构
上一篇 下一篇

猜你喜欢

热点阅读