Как отладить ошибку wait_fences

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

2 ответа

Решение

Эта ошибка обычно возникает в результате попытки анимировать то, что не видно на экране. Если это произойдет при запуске, я думаю, вы пытаетесь запустить анимацию в viewDidLoad.

Я бы посмотрел на пропущенные звонки, чтобы появился вид супер (сделал / будет). Если они опущены, вы увидите "Заборы ожидания", что бы это ни значило.

Другие вопросы по тегам