Прежде всего, я бы держался подальше от UIGetScreenImage (), если вы можете, по крайней мере, если вы планируете выпустить свое приложение в App Store. UIGetScreenImage () не является общедоступным API, и это один из наиболее вероятных «запрещенных» API, которые Apple отклонит для использования вашего приложения.
Если вам нужен снимок экрана (то есть то, что пользователь видит на экране устройства), я думаю, что выложенный подход работает хорошо, но вам нужно получить графическое представление UIView, которое содержит все ваши другие взгляды.
Однако весь код UIView должен быть в основном потоке. Вы можете выполнять файловый ввод / вывод в фоновом потоке, но фактическое получение изображения должно быть основным потоком.