先说结论
一个NSObject对象占16个字节。
探究原理
之前runtime系列的文章中写过,编译期会将objc_class结构体中的class_ro_t结构体初始化,那篇文章没有讲是如何初始化的,学完了分类后,在转为c++的代码里我看到了一些眉目。
首先这是main.m文件
#import <Foundation/Foundation.h>
#import "Father.h"
@interface Student : NSObject {
int _age;
}
@end
@implementation Student
@end
@interface People : Student {
int _number;
}
@end
@implementation People
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Student *student = [[Student alloc] init];
People *people = [[People alloc] init];
NSLog(@"123");
}
return 0;
}
然后我们定义的类呢有俩种形式,一种是之前文章里写的objc_class,类是在runtime期间被初始化的,所以现在的类结构体还都只是objc_object.