1、用strong和copy来声明delegate的情况下,依然可能发生互相持有的强引用循环。yytext上的两个协议方法一个是copy一个是strong。因为我从开发开始一直是用assign来声明,看到大牛的代码我一度怀疑了自己以前是不是都是错的。后来发现其实并没有所谓对错,只要控制的好,并且是需求的应用场景即可。
2、NSTimer,在容器的生存周期结束后如果还在执行。那么这个timer就会因为没有随着容器释放而释放。解决方式:新浪的妹纸跟我说,放在单利中就好了……我一脸的懵逼,但是解决的方式是这样的。还有一种假设,这几天面试完我会尝试一下。vc容器内用dispatch_source加上timer,也就是在开条子线程,加上这条 task 然后放在runloop中,然后测试下vc销毁后,这条runloop在设定时间后销毁,timer还会不会泄漏。因为我记得runloop可以保证线程的生存周期,不过不管怎么样,把可能存在的风险,也就是timer或者动画,用单利,会变得安全可控很多。
3、关于block,大家记得该weak的weak 该strong的strong。