запуск функции B через 3 секунды после завершения функции A (с использованием MBProgressHUD) - PullRequest
0 голосов
/ 24 августа 2011

Я хочу показать таблицу UIActionSheet через пару секунд после завершения функции, что делается с помощью функции B.

это прекрасно работает, если я сделаю это так:

main function
{
[self function A]
[self performSelector:@selector(function B) withObject:nil afterDelay:5];
}

но я использую MBProgressHUD в качестве индикатора активности:

main function
{
[HUD showWhileExecuting:@selector(funcion A) onTarget:self withObject:nil animated:YES];
[self performSelector:@selector(function B) withObject:nil afterDelay:5];
}

не работает, функция B никогда не вызывается. если я переключу его на [self function B], он будет вызван. Я предполагаю, что это проблема с потоками, которую я еще не понимаю. если я использую [self executeSelectorOnMainThread], он вызовет функцию B, но не похоже, что я могу отложить это.

1 Ответ

0 голосов
/ 05 января 2012

Ваша проблема в том, что HUD вызывается в главном потоке и не настроен на ожидание.Таким образом, она запускает вашу функцию A, а затем немедленно вызывает ваш executeSelector для функции B. Если вы хотите, чтобы функция B работала правильно, вам придется вызывать ее в конце функции A.

...