#iphone #objective-c #ios #cocoa-touch #ipad
#iPhone #цель-c #iOS #прикосновение какао #iPad #objective-c #cocoa-touch
Вопрос:
Я пытаюсь загрузить пользовательский класс UIActivityIndicatorView, однако я пытаюсь внедрить общую временную задержку до появления нового представления после отображения моего UIActivityIndicatorView. Я попробовал выполнить часть afterDelay, но это предположительно не останавливает основной поток, а скорее выполняет что-то через 5 секунд. То, что я ищу, — это что-то, что действительно могло бы остановить выполнение до тех пор, пока не истечет 5 секунд. Есть ли способ сделать это в iPhone? Я, конечно, могу написать другой метод и вызвать всплывающее окно new view после определенной задержки, но тогда мне пришлось бы вызывать этот способ обычно на каждом ViewController. Есть ли какой-либо общий способ обойти это?
Ответ №1:
Индикатор активности вашего пользовательского интерфейса не будет отображаться до тех пор, пока вы не перейдете к основному циклу выполнения. Способ остановить выполнение вашего приложения — это выйти (return from) из вашего текущего метода.
Чтобы завершить выполнение чего-либо через 5 секунд, переведите это в другой метод и используйте NSTimer или очередь отложенных операций для перезапуска обработки вашего приложения. Это универсальное решение, которое не приведет к зависанию пользовательского интерфейса (и индикаторов активности).
Комментарии:
1. Я сделал именно так, но это приводит к тому, что мой таймер по какой-то причине не запускается. Мой таймер выглядит следующим образом.. NSTimer * time; time = [NSTimer scheduledTimerWithTimeInterval: 1.0 вызов: повторений nil: НЕТ]; затем я прекращаю анимацию своего индикатора uiactivityindicator.
2. Где метод продолжения, указанный в вашем таймере?
3. ну, у меня создалось впечатление, что таймер в основном отложил бы транзакцию следующего выполнения, или я предполагаю, что я смешиваю это с методом sleep?
4. Это приведет к задержке, если вы вернетесь сразу после установки таймера. Попробуйте оператор return.
Ответ №2:
Вы не хотите этого делать, блокировка основного потока ПЛОХА и может привести к 8badf00d. Подумайте о перепроектировании вашего решения, чтобы избежать блокировки основного потока.
Комментарии:
1. ну, это всего лишь временно, пока я на самом деле не вызову приложение на устройстве и на самом деле не получу некоторую задержку в реальном времени, а не симулятор, который работает очень БЫСТРО .. Однако, если вы заметили, что есть некоторые приложения, которые делают это, например, вход в bank of america, всего за мои 2 цента здесь. Я знаю, что это очень плохая конструктивная особенность.