在我的iPhone应用程序中,主线程创建了一个后台线程,它执行了大量工作,在某些情况下需要询问用户他们的决定。当用户被问到问题时,后台线程应该停止工作,并且只有在用户回答问题后才能继续。
最好的方法是什么?
P.S。
我已经尝试过iPhone Developer's Cookbook中的ModalAlert,据说可以做到这一点,但我还没有成功。看起来像CFRunLoopRun(它应该阻止线程执行)只是不会停止后台线程。
我有类似的代码
+(void) main
{
[NSThread detachNewThreadSelector:@selector(startSync) toTarget:self withObject:nil];
}
+(void) startSync
{
CFRunLoopRun();
NSLog("Hi");
}
和NSLog
刚刚在syncStart
线程开始后立即执行。怪异。
答案 0 :(得分:1)
您是否尝试过NSObject
的{{1}}方法?
在主线程上向用户提出您的问题,然后将响应存储在后台线程可以访问它的位置。此外,通过将performSelectorOnMainThread:withObject:waitUntilDone:
设置为YES
参数,您应该能够在主线程选择器运行期间阻止后台线程。