- 3
- 0
- 约4.96千字
- 约 7页
- 2026-10-21 发布于河北
- 举报
唐巧iOS核心面试题(完整版详细答案)
本套题目完全对标唐巧经典《招聘一个靠谱的iOS》面试体系,筛选企业高频必考题型,答案结合底层原理+实际开发场景,贴合资深iOS面试评分标准,无冗余空话,适配初中高级iOS开发者面试备考。
一、Runtime核心面试题
1.能否向编译后的类、运行时创建的类添加实例变量?原因是什么?
答案:
1)编译后已注册的类:不能添加实例变量
类编译完成并注册到Runtime后,类结构体中的objc_ivar_list实例变量链表、instance_size内存大小已经固定,同时Runtime会提前处理好strong/weak属性的内存布局,无法动态扩容新增成员变量。
2)运行时动态创建的类:可以添加实例变量
通过objc_allocateClassPair新创建的类,尚未完成内存布局固化,在调用objc_registerClassPair注册之前,可以通过class_addIvar动态添加实例变量,注册之后同样无法新增。
2.Runtime如何实现weak属性?weak变量置nil的时机?
答案:
weak核心依托Runtime的弱引用表机制实现,底层核心函数为objc_storeWeak。
1)底层原理:以被引用对象的内存地址为键,所有指向该对象的weak变量地址为值,存储在全局弱引用哈希表中。
2)销毁逻
原创力文档

文档评论(0)