0

wait_fences:未能收到回复:10004003

我继续收到此错误。它发生在我的应用程序启动时。我将如何调试这个问题。有什么方法可以让我观察 wait_fences,看看那里发生了什么。有什么方法可以查看哪些线程阻塞了什么?

感觉这个错误只不过是一个没有工具或信息进入或离开虚空的黑洞。

任何有调试此错误提示的人将不胜感激。

新的

我现在改变了我的线程,所有线程调用都通过这个方法集来完成所有的调度

注意:我也希望你们不要仅仅因为看到另一个关于这个问题的问题就投票结束我的问题。没有关于此错误的真实信息。我需要知道是什么导致了这个错误和/或如何调试它。不是常见的“将超级调用添加到您的 viewDidAppear 等。如果这些有帮助,我不会问这个问题。

+ (void) ensureDispatchOfBlock:(dispatch_block_t) block onQueue:(dispatch_queue_t) queue  async:(BOOL) async{
    if (dispatch_get_current_queue() == queue){
        block();
    }
    else {
        if (async){
            dispatch_async(queue, block);
        }
        else {
            dispatch_sync(queue, block);
        }
    }
}

+ (void) ensureDispatchOnMainThread:(dispatch_block_t) block async:(BOOL) async{
    [self ensureDispatchOfBlock:block onQueue:dispatch_get_main_queue() async:async];
}

+ (BOOL) addBlock:(dispatch_block_t) block toQueue:(dispatch_queue_t) queue async:(BOOL) async {
    if (!async && dispatch_get_current_queue() == queue){
        return NO;
    }
    if (async){
        dispatch_async(queue, block);
    }
    else {
        dispatch_sync(queue, block);
    }
    return YES;
}
4

2 回答 2

1

该错误通常是由于尝试为屏幕上不可见的内容设置动画而出现的。如果它发生在启动时,我猜你正试图在 viewDidLoad 中启动动画。

于 2012-07-12T18:15:11.780 回答
0

我会寻找对超级视图(Did/Will)出现的缺失调用。如果省略这些,您将看到“等待围栏”,无论这意味着什么。

于 2012-07-12T18:55:52.663 回答