Безопасный способ визуализации UIVIew изображения на фоне потока? - PullRequest
7 голосов
/ 14 июня 2011

Я создаю маленькие мозаичные изображения, которые будут храниться на диске и отображаться для пользователя. Вот мой текущий процесс для этого:

  1. Создайте viewcontroller, который представляет интерфейс, который я хочу показать на экране
  2. Получить представление из viewcontroller и визуализировать с него изображение
  3. Сохраните его на диск и позже отобразите на экране

У меня сбой при попытке доступа к представлению viewcontroller. Когда я попытался исследовать это онлайн, я получил противоречивые результаты о том, безопасно ли создавать представление в фоновом режиме. Я читаю, что вызов UIGraphicsGetCurrentContext должен быть потокобезопасным, но, возможно, не обращаясь к UIView в фоновом потоке? Я пишу приложение для iOS 4 и выше. Вот код, который я использую (плитка - это viewcontroller):

CGSize size = CGSizeMake(20.0f, 30.0f);
UIGraphicsBeginImageContext(size);
[tile.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();           
UIGraphicsEndImageContext();

Сбой происходит при попытке доступа к свойству .view на плитке (EXC_BAD_ACCESS). Весь смысл в том, чтобы визуализировать вид на фоне, чтобы предотвратить блокировку пользовательского интерфейса, потому что есть много плиток для обработки.

Есть ли безопасный способ сделать это?

1 Ответ

2 голосов
/ 15 июня 2011

Я никогда не пробовал то, что вы описали, и мне не нравится быть носителем плохих новостей, но взято из документации Apple .

Примечание: по большей части, классы UIKit следует использовать только с Основная тема приложения. Это особенно актуально для производных классов от UIResponder или с участием манипулирование пользователем вашего приложения интерфейс в любом случае.

Конечно, они обычно говорят «по большей части», так что остается место для маневра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...