52、别忘了NSTimer会保留其目标对象
可以看这篇:iOS_定时器:NSTimer、GCDTimer、DisplayLink
要点:
NSTimer对象会保留其目标,直到计时器本身失效为止,调用invalidate方法可令计时器失效,另外,一次性的计时器在触发完任务之后也会失效反复执行任务的计时器,很容易引入保留环,如果这种计时器的目标又保留了计时器本身,那肯定会导致保留环。这种关系,可能直接发送,也可能通过对象图里的其他对象间接发生
可以扩充
NSTimer的功能,用“块”来打破保留环。不过除非NSTimer将来在公共接口里提供此功能,否则需创建分类,将相关实现代码加入其中
Last updated
Was this helpful?