2

我有一个连接方法。我想在线程中使用它,因为它需要很长时间。但是这种方法会触发其他许多方法,所以我会收到类似上面的错误消息。

* _WebThreadLockFromAnyThread(bool), 0x94316f0:从主线程或web线程以外的线程获取web lock。不应从辅助线程调用 UIKit。*

我的代码是:

    __weak LoginViewController *weakSelf = self;
    dispatch_queue_t connectionQueue = dispatch_queue_create("connection Queue", NULL);
    dispatch_async(connectionQueue, ^{
        [weakSelf connect];
        dispatch_async(dispatch_get_main_queue(), ^{
            [spinner stopAnimating];
        });
    });
4

1 回答 1

1

UIAlertView像,这样的UIKit 组件UIActivityIndicator不能在主线程以外的线程中使用。如果要显示警报/活动,则必须仅在主线程中显示/关闭或启动/停止。

我认为您正在调用[spinner stopAnimating];一个不是主线程的线程。如果是这样,那么在主线程中执行此操作。

[self performSelector:@selector(stopAnimation) onThread:[NSThread mainThread] withObject:nil waitUntilDone:NO];
于 2012-11-08T09:38:07.517 回答