Профилируйте все методы и функции, которые выполняются в главном потоке пользовательского интерфейса, и убедитесь, что всем им (включая подпрограммы и делегаты) требуется не более 16 миллисекунд для полного выхода в цикл выполнения. Убедитесь, что все обновления чертежей пользовательского интерфейса, вместе с этими методами пользовательского интерфейса, также занимают не более 16 мс. Тогда ваш пользовательский интерфейс может работать со скоростью 60 кадров в секунду (это максимально возможное значение на современных устройствах) и вряд ли пропустит какие-либо входные события.
Все остальное, все загрузки изображений, все сетевые передачи данных, вся обработка и т. Д., Запуск асинхронно и / или в фоновом потоке.
(И то, что все остальные тоже говорили ...:)