0

入力を隠しているUITextField名前付きの があります。_passwordTextField

[_passwordTextField  setSecureTextEntry:YES]; 

でフィールドのテキストにアクセスするたびにpasswordTextField.text、次の警告が表示されます。

void _WebThreadLockFromAnyThread(bool), 0x9077460: メイン スレッドまたは Web スレッド以外のスレッドから Web ロックを取得しています。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 に答える