У меня есть представление, которое получает новые данные из вторичного потока. Каждый раз, когда это происходит, он должен перерисовывать себя. Тем не менее, это не очень хорошо работает с циклом выполнения, и через некоторое время (оно не является детерминированным), я получаю <Error>: kCGErrorIllegalArgument: CGSUnionRegionWithRect : Invalid region
сообщения в консоли.
Я не уверен, как правильно синхронизировать вызовы с [view setNeedsDisplay:YES]
между потоками; ты можешь мне помочь?
Чтобы пояснить немного, поток B (фактически очередь отправки) передает новое содержимое представлению, вызывая это:
-(void)setImageBuffer:(unsigned char*)buffer
{
/* image handling stuff; thread-safe */
[self setNeedsDisplay:YES]; // but this is not thread-safe
}
И затем поток A, в котором выполняется цикл выполнения, должен снова отобразить представление.