NSTimer选择器即使在后台也会被调用

时间:2015-05-17 12:34:25

标签: ios timer background

所以,我有NSTimer设置为每秒调用一个选择器:

        timer = [NSTimer scheduledTimerWithTimeInterval:1.0f
                                                 target:self
                                               selector:@selector(TimerSelector:)
                                                userInfo:nil
                                                repeats:YES ];

这一切都很好,但自从我更新到iOS 8后,我注意到即使在应用程序进入后台之后,这个选择器仍然会被调用。我认为它最终会停止运行,因为我认为iOS应用程序不允许在后台运行而没有任何理由,但选择器仍然被调用。我试着保持应用程序并模拟内存警告,但选择器被调用超过6个小时。

此行为仅在iOS 8而非iOS 7中展示。这是正常的吗? iOS 8是否带来了我不知道的新内容?

1 个答案:

答案 0 :(得分:2)

听起来这可能是iOS 8中令人兴奋和有趣的变化,但我担心它只是模拟器中的一个错误。没有证据表明计时器继续在设备背景中运行,这才是最重要的。

设备上的情况是这样的,除非你的应用程序有其他原因要在后台运行,否则当你的应用程序在后台时,计时器会暂停,并在你的应用程序到达时恢复前景,就像以前的系统一样。

然而,在iOS 8 模拟器中,存在一个众所周知的错误(Apple在2014年11月和12月的Dev Forums帖子中显示了该错误):任务继续运行且未在该应用程序是背景的。不加理会!模拟器只是一个模拟器。在设备上进行真正的测试。