Ios 如何调试wait_fences错误

Ios 如何调试wait_fences错误,ios,multithreading,wait-fences,Ios,Multithreading,Wait Fences,wait_fences:未能接收回复:10004003 我继续得到这个错误。它发生在我的应用程序启动时。如何调试此问题。有没有什么办法可以让我看一下等待的篱笆,看看那里发生了什么。有什么方法可以查看哪些线程阻塞了哪些线程 感觉这个错误只不过是一个黑洞,并没有任何工具或信息进入或走出黑洞 任何有关于调试此错误的提示的人都将不胜感激 新的 我现在已经更改了线程,所有线程调用都通过这个方法集来执行所有调度 注意:我也希望你们不要因为看到关于这个问题的另一个问题就投票结束我的问题。没有关于此错误的真实信

wait_fences:未能接收回复:10004003

我继续得到这个错误。它发生在我的应用程序启动时。如何调试此问题。有没有什么办法可以让我看一下等待的篱笆,看看那里发生了什么。有什么方法可以查看哪些线程阻塞了哪些线程

感觉这个错误只不过是一个黑洞,并没有任何工具或信息进入或走出黑洞

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

新的

我现在已经更改了线程,所有线程调用都通过这个方法集来执行所有调度

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

+ (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;
}

该错误通常是由于尝试对屏幕上不可见的内容进行动画制作而导致的。如果在启动时发生,我猜您正在尝试在viewDidLoad中启动动画。

我会查找对super视图(Did/Will)的调用是否丢失。如果省略这些调用,您将看到“等待围栏”“,不管这意味着什么。

您是否正在尝试更新后台线程上的UI元素?您检查了吗?我检查了所有这些。我不相信我在做任何动画,但我有两种相互竞争的方法,它们在高优先级线程上被调度。我注释了其中一个,但仍然会得到错误,注释两个都会使错误消失。我正在处理所有线程部分,以便仅在需要时将其转换为检查和调度。但我认为dispatch_async将它们放在了我希望它们连续运行的队列中。我已经从启动中删除了UI代码,并且修改了所有调度以使用上面提供的代码。这个错误仍然会在我运行appI检查的4次中弹出3次。我所有的调用都调用它们的super,所有的UI编辑调用都在did-execute中,或者在dispatch\u async to-main中,我真正想要的是关于这个错误的更多信息。我正在转换所有线程调用。希望这会有所帮助。(仅当您的线程未被请求时发送,诸如此类的事情)