从历年weak看iOS面试

栏目: IOS · 发布时间: 7年前

内容简介:2013年面试官:代理用weak还是strong?我 :weak 。

一个玩笑!

2013年

面试官:代理用weak还是strong?

我 :weak 。

面试官:明天来上班吧

2014年

面试官:代理为什么用weak不用strong?

我 : 用strong会造成循环引用。

面试官:明天来上班吧

2015年

面试官:weak是怎么实现的?

我 :weak其实是 系统通过一个hash表来实现对象的弱引用

面试官:明天来上班吧

2016年

面试官:weak是怎么实现的?

我 :runtime维护了一个weak表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象指针的地址)数组。

面试官:明天来上班吧

2017年

面试官:weak是怎么实现的?

我 :

1   初始化时:runtime会调用objc_initWeak函数,初始化一个新的weak指针指向对象的地址。

2   添加引用时:objc_initWeak函数会调用 storeWeak() 函数, storeWeak() 的作用是更新指针指向,创建对应的弱引用表。

3   释放时,调用clearDeallocating函数。clearDeallocating函数首先根据对象地址获取所有weak指针地址的数组,然后遍历这个数组把其中的数据设为nil,最后把这个entry从weak表中删除,最后清理对象的记录。

面试官:明天来上班吧

2018年

面试官:weak是怎么实现的?

我 :跟2017年说的一样,还详细补充了objc_initWeak, storeWeak, clearDeallocating的实现细节。

面试官:小伙子基础不错。13k ,996干不干?干就明天来上班。。   下一个

2019年

面试官:weak是怎么实现的?

我 :     别说了,拿纸来,我动手实现一个。

面试官:等写完后,面试官慢悠悠的说,小伙子不错,我考虑考虑,你先回去吧


以上所述就是小编给大家介绍的《从历年weak看iOS面试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Agile Web Development with Rails, Third Edition

Agile Web Development with Rails, Third Edition

Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95

Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具