iOS Runtime面試題(NSObject)

一個 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 !結實人脈、討論技術你想要的這裏都有!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章