我有一个使用NSURLConnection下载一些数据的NSOperation,看起来有点像这样:
....
- (void)main
{
....
while (!self.isCancelled && !self.isLoaded)
{
[NSRunloop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NDate distantFutute]];
}
....
}
问题是连接不时挂起,并且由于没有其他源触发,循环会一直运行,没有机会取消操作。由于我的操作队列中有1个操作的限制,所以一切都被卡住了。
问题是这个问题的最佳解决方案是什么。
或许还有另一种方式?
答案 0 :(得分:3)
这是一种混合方法:
beforeDate:[NSDate dateWithTimeIntervalSinceNow:kConnectionMaxWaitSeconds]
)。CFRunLoopSourceCreate
)并在开始等待之前将其添加到运行循环中。-cancel
方法信号源(CFRunLoopSourceSignal
)并唤醒(CFRunLoopWakeUp
)运行循环。