IOS面试题——OC之对象(1)
一 面试题汇总
- 什么是内存对齐,内存对齐规则是什么样的?
- 内存对齐计算
(x + (8-1)) & ~(8-1)
和(x + (8-1)) >> 3 << 3
- 结构体实际占用内存计算,系统给该结构体开辟空间内存大小计算,他们的区别是什么?
- class_getInstanceSize , malloc_size, sizeof 区别?
- instance对象,class对象,mate-class对象的区别与关系? 在内存中各自存储哪些信息
- (Class)class
,+ (Class)class
,object_getClass(id _Nullable obj)
的区别- 怎么判断一个Class对象是否为meta-class?
- isa指针和superClass指针分别是如何指向的?
二 面试题解答(仅供参考)
2.1 什么是内存对齐,内存对齐规则是什么样的?
1 | 内存对齐是指在计算机系统中,数据在内存中存储时按照一定规则对其进行排列的过程。 |
2.2 内存对齐计算(x + (8-1)) & ~(8-1)
和 (x + (8-1)) >> 3 << 3
1 | 这两个表达式都是用来将一个地址 x 向上舍入到 8 字节的倍数。这在内存对齐中是常见的操作。 |
2.3 结构体实际占用内存计算,系统给该结构体开辟空间内存大小计算,他们的区别是什么?
1 | 1-结构体实际占用内存计算: |
2.4 class_getInstanceSize , malloc_size, sizeof 区别?
1 | 1-class_getInstanceSize 用于动态获取 Objective-C 对象实例的大小。 |
2.5 instance对象,class对象,mate-class对象的区别与关系? 在内存中各自存储哪些信息
1 | 在内存中,这些对象通常被存储在不同的位置: |
2.6 - (Class)class
,+ (Class)class
,object_getClass(id _Nullable obj)
的区别
1 | 1-- (Class)class: |
2.7 怎么判断一个Class对象是否为meta-class?
1 | 在 Objective-C 中,你可以通过 class_isMetaClass() 函数来判断一个 Class 对象是否为元类(meta-class)。 |
2.8 isa指针和superClass指针分别是如何指向的?
1 | 在 Objective-C 中,每个对象都有一个叫做 isa 指针和一个叫做 superClass 指针。 |
三 参考
- 简书—OC之对象