0

我有一个UITextFieldnamed _passwordTextField,我在其中隐藏输入:

[_passwordTextField  setSecureTextEntry:YES]; 

每次我使用 访问该字段的文本时passwordTextField.text,都会看到以下警告:

void _WebThreadLockFromAnyThread(bool), 0x9077460:从主线程或web线程以外的线程获取web lock。不应从辅助线程调用 UIKit。

如何删除此警告?

4

1 回答 1

3

这与UITextField. iOSUIKit要求对 UI 的任何直接操作都在主线程上完成,而不是在后台线程上完成。

如果您这样做,您的应用程序将不稳定,在某些情况下甚至可能崩溃。所以作为一项规则,不要从后台线程更新 UIKit 元素。请检查您的代码。

如果您使用的是 iOS >= 4,则可以使用GCD代替:

dispatch_async(dispatch_get_main_queue(), ^{
    [self doSomething:1 b:2 c:3 d:4 e:5]; //changes UI method
});

更新:请再次检查您的代码。在处理线程问题时,您需要观察的不是出现此警告的哪一行,而是需要完整查看。查看是从主线程还是后台线程调用整个方法..

于 2013-01-08T02:52:47.193 回答