2

接続方法があります。時間がかかるのでスレッドで使いたいです。しかし、このメソッドは他の多くのメソッドをトリガーするため、上記のようなエラーメッセージが表示されます。

* _WebThreadLockFromAnyThread(bool)、0x94316f0:メインスレッドまたはWebスレッド以外のスレッドからWebロックを取得しています。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

のような UIKit コンポーネントはUIAlertViewUIActivityIndicatorメインスレッド以外のスレッドでは使用できません。アラート/アクティビティを表示したい場合は、メインスレッドのみで表示/非表示または開始/停止する必要があります。

[spinner stopAnimating];メインスレッドではないスレッドで呼び出していると思います。その場合は、メインスレッドでこれを行います。

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