Timer使用注意事项:
1.被VC持有,当页面消失,倒计时未结束,未被销毁,导致VC不被dealloc。
VC1推出VC2a,VC2a有一个NSTimer,timer,从VC2a返回VC1,此时VC2a的timer还未结束倒计时。返回VC1时,timer未释放,导致VC2a未被dealloc,此时VC1再次推出VC2b,就会导致有一个未被显示的VC2a仍然存在于内存。如果VC2中有使用通知,RAC等接收数据,会导致VC2a和VC2b同时收到通知,后续逻辑会走两遍。
解决办法:在VC2的viewDidDisappear:方法中,检查self是否已经不在navigationcontroller.viewControllers中,不在则表示已经被抛弃,此时主动释放timer,如果则是跳转了下一个页面,此时不释放timer(再次返回该页面时,不会生成新的VC2)
(持续更新)
网友评论