1

在我的 iPhone 应用程序中,主线程创建了一个后台线程,它做了很多工作,在某些情况下需要询问用户他们的决定。当用户被问到问题时,后台线程应该停止工作,只有在用户回答问题后才能继续。

最好的方法是什么?

PS
我试过 iPhone Developer's Cookbook 中的 ModalAlert,据说可以解决问题,但我没有成功。似乎 CFRunLoopRun (应该停止线程执行)只是不会停止后台线程。

我有这样的代码

+(void) main
{
    [NSThread detachNewThreadSelector:@selector(startSync) toTarget:self withObject:nil];
}

+(void) startSync
{
    CFRunLoopRun();
    NSLog("Hi");
}

并且在线程NSLog启动后立即执行。syncStart奇怪的。

4

1 回答 1

1

你试过NSObject's 的performSelectorOnMainThread:withObject:waitUntilDone:方法吗?

在主线程上向用户提出您的问题,然后将响应存储在您的后台线程可以访问的地方。此外,您应该能够通过设置参数YES在主线程选择器运行期间阻止后台线程。waitUntilDone:

于 2011-12-15T14:55:32.557 回答