Цель C, что это за предупреждение? - PullRequest
1 голос
/ 05 марта 2011

void _WebThreadLockFromAnyThread(bool), 0x4c60190: получение веб-блокировки из потока, отличного от основного или веб-потока. UIKit не должен вызываться из вторичного потока.

Я получаю это предупреждение, если пытаюсь получить текст от UITextView.

1 Ответ

2 голосов
/ 05 марта 2011

Вы создали другой поток и вызвали в нем метод UIKit?Методы типа + (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument или - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg создадут новый поток.

Коды, связанные с пользовательским интерфейсом, должны использоваться только в основном потоке.Поскольку во многих кодах пользовательского интерфейса интенсивно используется многопоточность, поэтому возможность вызова кода пользовательского интерфейса из любого потока может легко привести к неуправляемой тупиковой ситуации.Таким образом, большинство каркасов пользовательского интерфейса имеют это правило.

Вы можете принудительно запустить код в основном потоке, используя метод, подобный - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

Например,

- (void)UIControlCode
{
}
- (void)processingCodeInOtherThread
{
    [self performSelectorOnMainThread:@selector(UIControlCode) withObject:nil waitUntilDone:NO];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...