1. 一个NSObject对象占用多少的内存
clang -rewrite-objc main.m -o main.cpp
- 指定平台和系统架构 32位或者是64位, arm7 arm64
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main.cpp
2. NSObject的底层定义和实现
struct NSObject_IMPL {
Class isa;
};
NSobject * objc = [[NSObject alloc] init]
//获取NSObject实例对象中的成员变量占用的内存大小 --> 8字节 isa指针
NSLog(@"objc - %zd",class_getInstanceSize([objc class]));
// 获得obj指针所指向内存的大小 --> 16 内存对齐
NSLog(@"objc - %zd",malloc_size((__bridge const void *)(objc)));

Snip20201115_1.png
3.自定义一个类对象
@interface Person : NSObject{
NSString * _name;
NSInteger _age;
}
@end
struct Person_IMPL {
struct NSObject_IMPL NSObject_IVARS;
NSString *_name;
NSInteger _age;
};
struct NSObject_IMPL {
Class isa;
};
网友评论