摘要: 问题 weak 变量在引用计数为0时,会被自动设置成 nil,这个特性是如何实现的? 答案 在 Friday QA 上,有一期专门介绍 weak 的实现原理。https://mikeash.com/pyblog/friday-qa-2010-07-16-zeroing-weak-references 阅读全文
posted @ 2016-12-08 08:40 韦韦韦 阅读(3228) 评论(0) 推荐(0) 编辑
摘要: 问题 有没有这样一个需求场景,block 会产生循环引用,但是业务又需要你不能使用 weak self? 如果有,请举一个例子并且解释这种情况下如何解决循环引用问题。 答案 需要不使用 weak self 的场景是:你需要构造一个循环引用,以便保证引用双方都存在。比如你有一个后台的任务,希望任务执行 阅读全文
posted @ 2016-12-08 08:39 韦韦韦 阅读(1463) 评论(0) 推荐(0) 编辑
摘要: 问题 继续回答昨天的问题第二问。 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:为什么 block 里面还需要写一个 strong self,如果不写会怎么样? 答案 在 block 中先写一个 s 阅读全文
posted @ 2016-12-08 08:37 韦韦韦 阅读(2979) 评论(0) 推荐(0) 编辑
摘要: 问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:什么时候在 block 里面用 self,不需要使用 weak self? 答案 当 block 本身不被 self 持有,而被别的对象持有,同时 阅读全文
posted @ 2016-12-08 08:35 韦韦韦 阅读(5460) 评论(0) 推荐(0) 编辑
摘要: 题目:找出两个 UIView 的最近的公共 View,如果不存在,则输出 nil 。 分析:这其实是数据结构里面的找最近公共祖先的问题。 一个 UIViewController 中的所有 view 之间的关系其实可以看成一颗树,UIViewController 的 view 变量是这颗树的根节点,其 阅读全文
posted @ 2016-12-08 08:32 韦韦韦 阅读(2532) 评论(0) 推荐(0) 编辑