中高级iOS笔试题及详细答案.docxVIP

  • 4
  • 0
  • 约8.24千字
  • 约 9页
  • 2026-06-10 发布于河北
  • 举报

中高级iOS笔试题及详细答案

一、基础核心题(每题10分,共30分)

1.简述OC中weak和assign的区别,以及weak的实现原理

参考答案:

###区别(核心重点)

1.适用对象不同:weak仅用于OC对象(如NSObject子类),不能用于基本数据类型(int、float等);assign可用于基本数据类型,也可用于OC对象,但用于OC对象时存在野指针风险。

2.内存管理行为不同:weak修饰的对象,当被释放后,指针会自动置为nil(避免野指针);assign修饰的OC对象,被释放后,指针不会置nil,仍指向原内存地址(成为野指针,访问时会崩溃)。

3.引用类型不同:两者均为弱引用(不增加引用计数),但assign用于OC对象时,本质是“无自动置nil的弱引用”,而weak是“有自动置nil的弱引用”。

###weak实现原理(底层逻辑,贴合实际开发理解)

OC中weak的实现依赖“弱引用表(SideTable)”,核心流程如下:

1.当用weak修饰一个对象时,系统会将该对象的指针和weak指针本身,注册到SideTable的弱引用表中(弱引用表是一个哈希表,key是被引用对象的地址,value是该对象所有weak指针的集合)。

2.当被引用的对象引用计数变为0(即将被释放)时,系统会遍历弱引用表中该对象对应的所有weak指针,将它们全部置为

文档评论(0)

1亿VIP精品文档

相关文档