请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对象是不是也持有了nstimer?那为什么nstimer不会强引用对象呢?


我的理解是中间对象只是通过weak指针变为nil这一特性的监测及时销毁了nstimer,但没有解决真正意义上的nstimer对对象的持有,老师不知道我这种理解是否问题?

正在回答

插入代码

1回答

理解是对的,我们解决循环引用始终围绕两个思路,第一,避免产生环路。第二,在有环路的情况下,找到合适的时机去断开环路。
针对NSTimer的循环引用就是应用了第二种思路,而对于NSTimer本身特殊的地方在于不好找断环的时机,课程中得案例巧妙利用了weak指针得特性,即在对象释放的时候,weak指针会自动被置为nil,这个特点在内存管理章节有针对原理性的详细分析,这里不再赘述。那么在timer的回调当中通过对weak指针是否为空的判断来及早断开环路。

1 回复 有任何疑惑可以回复我~
  • 提问者 qq_沩鉨緈諨_0 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-11-04 18:33:17
  • 终于明白了好的书籍为什么要看很多次了,看一次可能只是理解个大概,只是记住了结论,多看几次,反复体会才会明白其中道理.
    回复 有任何疑惑可以回复我~ 2019-07-04 22:13:35
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号