Timer使用注意事項(xiàng):
1.被VC持有,當(dāng)頁面消失,倒計(jì)時(shí)未結(jié)束,未被銷毀,導(dǎo)致VC不被dealloc。
VC1推出VC2a,VC2a有一個(gè)NSTimer,timer,從VC2a返回VC1,此時(shí)VC2a的timer還未結(jié)束倒計(jì)時(shí)。返回VC1時(shí),timer未釋放,導(dǎo)致VC2a未被dealloc,此時(shí)VC1再次推出VC2b,就會(huì)導(dǎo)致有一個(gè)未被顯示的VC2a仍然存在于內(nèi)存。如果VC2中有使用通知,RAC等接收數(shù)據(jù),會(huì)導(dǎo)致VC2a和VC2b同時(shí)收到通知,后續(xù)邏輯會(huì)走兩遍。
解決辦法:在VC2的viewDidDisappear:方法中,檢查self是否已經(jīng)不在navigationcontroller.viewControllers中,不在則表示已經(jīng)被拋棄,此時(shí)主動(dòng)釋放timer,如果則是跳轉(zhuǎn)了下一個(gè)頁面,此時(shí)不釋放timer(再次返回該頁面時(shí),不會(huì)生成新的VC2)
(持續(xù)更新)