
Runtime面试资料.pdf
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
《Runtime面试资料》是一份全面总结计算机编程领域中运行时概念及其应用的专业文档,涵盖常见问题和解决方案,旨在帮助技术求职者准备相关岗位面试。
在讨论iOS开发中的Objective-C语言Runtime系统时,我们主要关注对象模型、内存管理、方法调用以及类的动态特性这些核心机制。面试题通常涵盖上述方面,并且详细解析如下:
1. isa指针:
每个Objective-C对象都有一个isa指针,指向该对象所属的类实例(class object)。通过这个指针可以找到定义在对象上的所有方法。
2. 类和元类的关系:
在Objective-C中,类本身是作为“类对象”来处理的。每一个这样的类对象都存在于它自己的元类之中;而每个元类又是一个自身所属的“基元类”的实例。这种层次结构确保了能够通过isa指针找到正确的实现,并且可以通过继承链调用正确的方法。
3. 内存分配:
NSObject默认占用16字节内存,但实际在不同的处理器架构(如32位和64位)下会有所不同:32位系统中为4个字节,而64位则需要8个字节。这种设计确保了对象地址是16的倍数。
4. 类结构体:
class_rw_t用于存储运行时可以改变的信息(如方法列表),而class_ro_t保存的是编译期确定的数据(例如固定的方法和协议)。
5. 方法缓存机制:
Runtime系统使用一个哈希表来加速经常调用的方法查找过程,这个表格将SEL(选择器标识符)映射到IMP(实现指针)。该结构在objc-cache.mm文件中定义并实现了具体的访问逻辑。
6. 关联对象:
Objective-C允许开发者通过关联对象机制动态地将属性绑定至一个已存在的类或实例上。这些关联不会自动释放,而是在目标对象被销毁时由系统清理掉。
7. 方法交换(Method Swizzling):
这是一种在运行时刻改变方法行为的技术,即替换原来的方法实现为新的代码块。它通常用于修改框架中的默认功能来满足特定需求。
8. 未识别选择器异常:
当一个消息发送给对象却没有对应的处理程序时,系统会抛出“unrecognized selector”错误。这意味着尝试调用了一个不存在或不可访问的方法。
9. Category中添加属性:
Category机制不允许直接向类添加成员变量,但可以使用关联对象间接实现这一目的。这通常涉及到objc_setAssociatedObject和objc_getAssociatedObject函数的运用以管理这些动态绑定的数据项。
以上知识点是Objective-C Runtime面试题中的常见内容,掌握它们有助于深入了解这个强大的编程模型以及面向对象的设计原则。
全部评论 (0)


