对象是不是也持有了nstimer?那为什么nstimer不会强引用对象呢?
来源:6-8 循环引用相关面试问题&面试总结

qq_沩鉨緈諨_0
2018-11-04
我的理解是中间对象只是通过weak指针变为nil这一特性的监测及时销毁了nstimer,但没有解决真正意义上的nstimer对对象的持有,老师不知道我这种理解是否问题?
写回答
1回答
-
理解是对的,我们解决循环引用始终围绕两个思路,第一,避免产生环路。第二,在有环路的情况下,找到合适的时机去断开环路。
针对NSTimer的循环引用就是应用了第二种思路,而对于NSTimer本身特殊的地方在于不好找断环的时机,课程中得案例巧妙利用了weak指针得特性,即在对象释放的时候,weak指针会自动被置为nil,这个特点在内存管理章节有针对原理性的详细分析,这里不再赘述。那么在timer的回调当中通过对weak指针是否为空的判断来及早断开环路。122019-07-04
相似问题