iOS进阶干货分享

iOS Runtime面试题(NSObject)

2019-07-27  本文已影响7人  _小迷糊_997

一个 NSObject 对象占用多少内存空间?

受限于内存分配的机制,一个 NSObject对象都会分配 16Bit 的内存空间。

但是实际上在 64位 下,只使用了 8bit;
在32位下,只使用了 4bit

一个 NSObject 实例对象成员变量所占的大小,实际上是 8KB

#import <Objc/Runtime>
Class_getInstanceSize([NSObject Class])

本质是

size_t class_getInstanceSize(Class cls)
{
    if (!cls) return 0;
    return cls->alignedInstanceSize();
}

获取 Obj-C 指针所指向的内存的大小,实际上是16KB

#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj); 

对象在分配内存空间时,会进行内存对齐,所以在 iOS 中,分配内存空间都是 16字节 的倍数。

可以通过以下网址 :openSource.apple.com/tarballs 来查看源代码。

面试题持续整理更新中,需要拿到第一手大厂面试题及答案文档可以添加 iOS进阶学习交流群:551346706 !结实人脉、讨论技术你想要的这里都有!

上一篇 下一篇

猜你喜欢

热点阅读