вызов метода, который изменяет свойства пера с помощью detachNewThreadSelector - PullRequest
0 голосов
/ 30 октября 2010

Я звоню doSaveItems: как

[NSThread detachNewThreadSelector:@selector(doSaveItems:) toTarget:self withObject:aObject];

doSaveItems: метод имеет код, который ссылается на один из моих выходов:

[uiProgressLedIdle setHidden:YES];

конечно, я устанавливаю авто-релизбассейн внутри этого метода.Проблема в том, что [uiProgressLedIdle setHidden:YES]; не влияет на мой графический интерфейс, когда я вызываю этот метод, используя detachNewThreadSelector: toTarget: withObject: Если я вызываю его [self doSaveItems: aObject], то все в порядке, и мой uiProgressLedIdle скрыт!Любое предложение о том, что я скучаю?Спасибо!

1 Ответ

4 голосов
/ 30 октября 2010

UIKit не является потокобезопасным; всегда звоните из основного потока.

конечно, вы можете использовать многопоточность в iOS - но вы отправляете свои загрузки и другие запросы на блокировку во вторичные потоки. когда работа закончена, используйте performSelectorOnMainThread:, чтобы уведомить объект, ответственный за обновление объектов пользовательского интерфейса. этот вызов произойдет при следующем вызове цикла выполнения основного потока.

...