我最近发现,在等待我的NSURLConnections通过时,如果我告诉等待线程要做的话,效果会好得多:
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
而不是
[NSThread sleepForTimeInterval:1];
在阅读了一些关于NSRunLoop runMode:beforeDate之后:听起来它总是优于睡眠。有人发现这是真的吗?
答案 0 :(得分:9)
是的,NSRunLoop更好,因为它允许runloop在您等待时响应事件。如果你只是睡觉你的线程,你的应用程序将阻止即使事件到达(如你正在等待的网络响应)。
我通常有这种结构:
while ([self isFinished] == NO) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
然后当你想要阻止时,isFinished返回true。 Eith