SpriteKit EXC_BAD_ACCESS NSTimer

时间:2015-03-05 11:15:24

标签: ios sprite-kit nstimer

我有一个GameScene,我在GameViewController中实现。 GameViewController包含游戏场景的后退按钮。因此,当我完成游戏时,我有一个延迟2秒的NSTimer。

self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0
                                              target:self
                                            selector:@selector(playAnimation)
                                            userInfo:nil
                                             repeats:NO];

但是,如果我点击后退按钮,我的视图控制器会弹出,但即使在弹出到前一个视图控制器之后仍然存在来自游戏场景的音乐,并且在我的计时器尝试调用它之后会导致访问不良,因为场景似乎已经解除分配。

所以我从来没有在游戏场景中达到dealloc方法,我可以让我的计时器无效。

2 个答案:

答案 0 :(得分:0)

  

target要将指定消息发送到的对象   计时器触发时的aSelector。计时器保持强大的参考   目标直到它(计时器)失效。

所以我想在您的计时器启动之前,视图控制器永远不会被取消分配。

所以你不能在viewWillDisappear中使计时器失效吗?

答案 1 :(得分:0)

我已经使用了在游戏中播放声音的SKAction,甚至在解雇我的视图控制器后,由于播放声音,游戏场景仍然在记忆中。但是当声音结束时,游戏场景似乎得到了一个dealloc,但是计时器仍在等待它的调用,我认为这会导致访问不良。