iPhone背景线程中的模态警报

时间:2011-12-15 13:01:37

标签: iphone background alert background-thread cfrunloop

在我的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线程开始后立即执行。怪异。

1 个答案:

答案 0 :(得分:1)

您是否尝试过NSObject的{​​{1}}方法?

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