Я создаю небольшие изображения плитки, которые будут храниться на диске и отображаться пользователю. Вот мой текущий процесс для этого:
- Создайте контроллер представления, который представляет пользовательский интерфейс, который я хочу показать на экране.
- Получить вид из контроллера представления и отобразить из него изображение.
- Сохраните его на диск и отобразите на экране позже
У меня происходит сбой, когда я пытаюсь получить доступ к представлению контроллера представления. Когда я пытался исследовать это в Интернете, я получаю противоречивые результаты о том, безопасно ли создавать представление в фоновом режиме. Я читаю, что вызов UIGraphicsGetCurrentContext должен быть потокобезопасным, но, возможно, не имеет доступа к UIView в фоновом потоке? Я пишу приложение для iOS 4 и выше. Вот код, который я использую (плитка - это контроллер просмотра):
CGSize size = CGSizeMake(20.0f, 30.0f);
UIGraphicsBeginImageContext(size);
[tile.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Сбой происходит при попытке доступа к свойству .view на плитке (EXC_BAD_ACCESS). Весь смысл в том, чтобы визуализировать представление в фоновом изображении, чтобы предотвратить блокировку пользовательского интерфейса, потому что нужно обработать много плиток.
Есть ли безопасный способ сделать это?
renderInContextМОЖЕТ БЫТЬ использовано на разная нить. Однако на самом деле он загадочным образом падает. Кто-нибудь нашел решение этой проблемы? - person Howy   schedule 17.07.2013