睡眠或暂停NSThread

时间:2011-10-31 10:47:42

标签: ipad nsthread

我正在创建一个新的Thread,它会在每一段时间后运行我的一个方法。

现在我正在做的事情如下:

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(setUpTimerThread) object:nil];
 [thread start];

上面的方法调用我的setUpTimerThraed方法,这个方法生成一个NSTimer并在每1分钟后调用一个特定的方法,即syncData。现在我想要的是我的同步数据方法是将一些文件发送到FTP文件夹。当它将一个文件发送到FTP时,我希望我的“线程”能够暂时休眠一段时间。

我用过

[NSThread sleepForTimeInterval:3.0];

但是这段代码阻止了我的应用程序主线程。有什么方法我只能睡一段时间我的“线程”线程,以便它不会停止我的应用程序响应3秒,并没有睡觉我的主线程。 希望你得到我要问的人。请帮忙吗?

2 个答案:

答案 0 :(得分:6)

sleepForTimeInterval:将调用它所调用的线程。尝试在要睡觉的线程上调用睡眠而不是主线程。

替换当前的睡眠呼叫
[self performSelector:@selector(sleepThread) onThread:thread withObject:nil waitUntilDone:YES];

然后实现此方法

-(void)sleepThread {
    [NSThread sleepForTimeInterval:3.0];
}

答案 1 :(得分:0)

ColdLogic的解决方案是正确的,但它必须将标志waitUntilDone置于YES,否则永远不会调用该方法。