gpt4 book ai didi

iphone - 警告 : UIKit should not be called from a secondary thread

转载 作者:行者123 更新时间:2023-12-03 20:17:43 26 4
gpt4 key购买 nike

在我的 iPhone 应用程序中,我需要连接到网络服务器,因为这可能需要一些时间,我使用的线程如下:

[NSThread detachNewThreadSelector:@selector(sendStuff) toTarget:self withObject:nil];

- (void)sendStuff {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

//Need to get the string from the textField to send to server
NSString *myString = self.textField.text;

//Do some stuff here, connect to web server etc..

[pool release];
}

在我使用 self.textField 的行上,我在控制台中收到一条警告:void _WebThreadLockFromAnyThread(bool), 0x5d306b0: 从主线程或Web线程以外的线程获取Web锁。 UIKit 不应从辅助线程调用。

如何使用文本字段而不出现此错误?

最佳答案

这在一定程度上取决于您想要对文本字段执行的操作。如果读取值是唯一的事情,你可以这样做:

[NSThread detachNewThreadSelector:@selector(sendStuff) toTarget:self withObject:self.textField.text];

- (void)sendStuff:(NSString*)myString {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//Do someting with myString
[pool release];
}

如果您想更改文本字段上的值,您可以:

[self.textField performSelectorOnMainThread:@selector(setText:) withObject:@"new Text"];

关于iphone - 警告 : UIKit should not be called from a secondary thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3201761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com