sleepForTimeInterval更改间隔

时间:2014-03-19 13:25:08

标签: iphone objective-c

我使用sleepForTimeInterval。我的代码

- (void)runningInBackground
{

    while (1) {

    [NSThread sleepForTimeInterval:waitInterval];

    [self getInterval];

   }
}

如果sleepForTimeInterval未完成,我该如何更改间隔?

2 个答案:

答案 0 :(得分:1)

你做不到。线程被阻塞时不会发生运行循环处理。

答案 1 :(得分:1)

几乎没有sleepForTimeInterval:是正确iOS代码的情况。 iOS使用NSTimerNSOperation或GCD队列执行此类操作。如果你发现自己正在调用NSThread,那么你几乎肯定是在框架的错误部分。

在不知道问题详情的情况下,您可能需要的工具是NSTimer。它们使用起来很简单,使用它们很容易解决这类问题。您只需使计时器无效并在想要更改间隔时创建一个新计时器。你不需要打破睡眠。

但是你应该总是问自己是否可以将轮询(基于区间)的解决方案转变为事件驱动的解决方案。你醒来的时候在做什么?如果你经常只是检查某些东西并重新入睡,那对电池来说非常糟糕。在大多数情况下,iOS有很好的解决方案可以让事件被驱动(所以当你想要的东西没有轮询时你就会被调用)。