wait_fences: не удалось получить ответ: ошибка 10004003 - UIAlertView с UIActivityIndicatorView - PullRequest
2 голосов
/ 02 марта 2011

Я надеялся, что ответы на вопрос squeezemylime решат мою проблему, так как у меня также есть UIAlertView без текстового поля, но это не сработало. Вместо текстового поля я поместил на него анимацию UIActivityIndicatorView, и при создании кнопки не использовались. Таким образом, предупреждение отключается программно, так что метод делегата уничтожает счетчик в предупреждении и само предупреждение (которое было сохранено в течение времени).

Итак, я получаю также эти wait_fences: сообщения в отладчике, и я тем временем замерз, потому что все, что я пробовал, включая ценные подсказки в этой теме, не убьет эти wait_fences: сообщений. Сбоев нет ни с GDB, ни на устройстве.

Проходя по коду, я понял, что сообщение wait_fences: отображается сразу после делегата для dismissWithClickedButtonIndex: 0 animated: NO освобождает сомнительный UIAlertView. Тогда я подумал, что это может быть похоже на методику задержки squeezemylime , и сделал это:

[theAlertObj performSelector:@selector(dismissWithClickedButtonIndex:animated:) withObject:nil afterDelay:0.1];

и сообщение wait_fences: пропало! Но вызов dismissWithClickedButtonIndex: animated: не может быть удовлетворен, поскольку отсутствует второй аргумент animated: NO - поэтому я попробовал его с некоторыми изменениями, реализуя метод для вызова:

- (void)dismissNamedAlert: (UIAlertView*)alert
{
    [alert dismissWithClickedButtonIndex:0 animated:NO];
}

- (void)postProcessLogicalWork: (id)arg
{
    [self performSelector:@selector(dismissNamedAlert:) withObject:theAlertObj afterDelay:0.2];
    ...
}

Облом: вновь появилось сообщение wait_fences: ! Я думаю, что не могу вернуться к рабочему решению с неудовлетворенным вызовом метода - так как это можно сделать? И / или при каких обстоятельствах появляются эти wait_fences: сообщения?

Вкратце рабочий процесс для моей вещи такой:

  • viewDidAppear вызывает его super , а затем мой модуль обновления данных afterDelay: 0.3f
  • средство обновления данных вызывает новый поток для процедуры обновления
  • новый поток создает и отображает предупреждение с вращателем в главном потоке, а затем запускается в течение нескольких секунд
  • новый поток выполняет завершающую процедуру для основного потока и выполняется
  • Финишер отклоняет предупреждение, как описано выше (с wait_fences: ) и обновляет дисплей при необходимости
  • остальное время простоя ... на данный момент

Есть идеи, что делать?

1 Ответ

0 голосов
/ 28 сентября 2011

Я не знаю причину, по которой это происходит, но решите эту проблему, изменив эту строку

[alert dismissWithClickedButtonIndex:0 animated:NO];

на эту

[alert dismissWithClickedButtonIndex:0 animated:YES];
...