Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 访问文本字段时关于从其他线程获取锁的警告_Ios_Objective C_Multithreading_Cocoa Touch_Uitextfield - Fatal编程技术网

Ios 访问文本字段时关于从其他线程获取锁的警告

Ios 访问文本字段时关于从其他线程获取锁的警告,ios,objective-c,multithreading,cocoa-touch,uitextfield,Ios,Objective C,Multithreading,Cocoa Touch,Uitextfield,我有一个名为\u passwordTextField的UITextField,在那里我隐藏了输入: [_passwordTextField setSecureTextEntry:YES]; 每次使用passwordTextField.text访问字段文本时,我都会看到以下警告: void _WebThreadLockFromAnyThread(bool),0x9077460:从主线程或web线程以外的线程获取web锁。不应从次线程调用UIKit 如何删除此警告?这与UITextField无

我有一个名为
\u passwordTextField
UITextField
,在那里我隐藏了输入:

[_passwordTextField  setSecureTextEntry:YES]; 
每次使用
passwordTextField.text
访问字段文本时,我都会看到以下警告:

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


如何删除此警告?

这与
UITextField
无关。iOS
UIKit
要求在主线程上而不是从后台线程对UI进行任何直接操作

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

如果您使用的是iOS>=4,则可以使用“执行此操作”:

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

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

这与
UITextField
无关。iOS
UIKit
要求在主线程上而不是从后台线程对UI进行任何直接操作

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

如果您使用的是iOS>=4,则可以使用“执行此操作”:

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

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

是,在主线程中调用的所有代码,并且只有SecureTextEntry UITextField提供此警告,通常用于UITextField。是,在主线程中调用的所有代码,并且只有SecureTextEntry UITextField提供此警告,通常用于UITextField。[body setObject:_nameTextField.text forKey:@“username”];//请再次检查代码。在处理线程问题时,您需要观察的不是出现此警告的哪一行,而是整个方法。查看整个方法是从主线程还是从后台线程调用[body setObject:_nameTextField.text forKey:@“username”];//请再次检查您的代码。在处理线程问题时,您需要观察的不是出现此警告的哪一行,而是整个过程。查看整个方法是从主线程还是从后台线程调用的