这个记忆安全吗?

时间:2010-09-21 16:13:42

标签: iphone objective-c

[NSTimer scheduledTimerWithTimeInterval:0.033 target:self selector:@selector(gameLoop)
     userInfo:nil repeats:YES];

启动它后,我没有做任何事情来解除激活或杀死这个计时器。 安全吗?或者它会导致我泄漏记忆?

2 个答案:

答案 0 :(得分:4)

它不应该泄漏内存。你没有保留计时器。运行循环将保留它(我认为),但它会在它不再需要它时释放它。

答案 1 :(得分:2)

计时器由运行循环保留,因此您不需要自己保留它。

但是计时器将保留其目标,因此只要它重复并且您没有使其无效,您的目标对象将不会被释放。你需要选择一个好的时间来调用invalidate,这将导致运行循环释放它。

请注意,您不应该自己保留计时器,否则会有保留周期的风险。

(我昨天回答了这个问题并接受了教育。试着赎罪。)