我正在创建一个新的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秒,并没有睡觉我的主线程。 希望你得到我要问的人。请帮忙吗?
答案 0 :(得分:6)
sleepForTimeInterval:
将调用它所调用的线程。尝试在要睡觉的线程上调用睡眠而不是主线程。
用
替换当前的睡眠呼叫[self performSelector:@selector(sleepThread) onThread:thread withObject:nil waitUntilDone:YES];
然后实现此方法
-(void)sleepThread {
[NSThread sleepForTimeInterval:3.0];
}
答案 1 :(得分:0)
ColdLogic的解决方案是正确的,但它必须将标志waitUntilDone
置于YES
,否则永远不会调用该方法。