Если я использую Interface Builder для связывания, например. NSTextField
значение someObject.property
, и это свойство (при условии, что это assign, atomic
тип) изменится с основной темы, это будет безопасно/правильно?Безопасно ли использовать привязки интерфейса Builder для наблюдения за изменениями свойств, которые не были изменены?
Какао обычно запрещает обновление пользовательского интерфейса из не основной темы, поэтому я задаюсь вопросом, автоматически ли механизм привязки автоматически обновляет обновления для основного потока, или небезопасно напрямую связываться с объектами, которые могут быть изменены из других потоков ,
То же самое верно, если я сама запускаю уведомления KVO?
-(void)setProperty: {
dispatch_async(dispatch_get_global_queue(0,0), ^{
[self willChangeValueForKey:@"property"];
…
[self didChangeValueForKey:@"property"];
});
}
выйдет NSTextField
заметив, что свойство по-прежнему обновляться в главном потоке?
(связанные с problems I'm seeing with waitUntilExit
)
Нет, это не так. Переосмыслите свою архитектуру (и прочитайте эту замечательную серию блога блога Брент Симмонс: http://inessential.com/2015/05/22/how_not_to_crash_4_threading) – cacau