我收到以下错误,我不知道如何避免它,有人可以帮助我
bool _WebTryThreadLock(bool),0x1ea990:尝试从主线程或Web线程以外的线程获取Web锁。这可能是从辅助线程调用UIKit的结果。现在崩溃......
- (void)loadImg {
NSData* image = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://images.sugarscape.com/userfiles/image/DECEMBER2010/Lozza/HarryStyles2.jpg"]];
UIImage* img = [[UIImage alloc] initWithData:image] ;
[self performSelectorInBackground:@selector(showImg:) withObject:img];
}
答案 0 :(得分:3)
不要从主线程以外的线程调用任何UIKit方法。 performSelectorInBackground:withObject:
在辅助线程上执行showImg:
,如果你在那里调用任何UIKit方法,那可能就是问题。
实际上用简单的英语解释:
这可能是从辅助线程调用UIKit的结果
答案 1 :(得分:0)
从后台线程更新UI是不安全的,我假设你在这里做
[self performSelectorInBackground:@selector(showImg:) withObject:img];
我想你可能已经错误地想要了解它:
答案 2 :(得分:0)
根据Threading Programmin Guide: Thread Safety Summary,你应该在主线程上调用UIView的操作。尝试[self performSelectorOnMainThread:@selector(showImg :) withObject:img waitUntilDone:YES]。