显示图像时出错

时间:2012-01-15 16:09:09

标签: iphone objective-c cocoa-touch

我收到以下错误,我不知道如何避免它,有人可以帮助我

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];
    }

3 个答案:

答案 0 :(得分:3)

不要从主线程以外的线程调用任何UIKit方法。 performSelectorInBackground:withObject:在辅助线程上执行showImg:,如果你在那里调用任何UIKit方法,那可能就是问题。

实际上用简单的英语解释:

  

这可能是从辅助线程调用UIKit的结果

答案 1 :(得分:0)

从后台线程更新UI是不安全的,我假设你在这里做

[self performSelectorInBackground:@selector(showImg:) withObject:img];

我想你可能已经错误地想要了解它:

  1. 在后台线程上检索图像
  2. 使用主线程上的此图像更新UI

答案 2 :(得分:0)

根据Threading Programmin Guide: Thread Safety Summary,你应该在主线程上调用UIView的操作。尝试[self performSelectorOnMainThread:@selector(showImg :) withObject:img waitUntilDone:YES]。