2
我有一个导航控制器提供的UIViewController。此的UIViewController异步加载的图像,如下所示:图像异步加载 - 如果处理崩溃
[self performSelectorInBackground:@selector(downloadData) withObject:nil];
- (void)downloadData {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
LocationDetails * details = [[LondonDatabase database] locationDetails : UniqueID];
NSData * imageData = [NSData dataWithContentsOfURL : [NSURL URLWithString : [details image]]];
picture = [[UIImage alloc ]initWithData:imageData];
[self performSelectorOnMainThread : @selector(updateUI) withObject : nil waitUntilDone : NO];
[pool release];
}
的问题是,如果这个视图控制器被弹出而上述方法与错误执行应用程序崩溃的堆栈:
布尔_WebTryThreadLock (bool),0x61b3950:尝试从主线程或Web线程以外的线程获取网络锁 。这可能是 是从辅助线程调用UIKit的结果。碰撞 现在...
任何人都可以帮忙吗?
感谢,
马丁
干杯标记。线程优先级是否应该是0.8? – GuybrushThreepwood 2011-04-15 19:31:24
@Ohnomycoco:不,你可以忽略线程优先级指令。我们使用的表格单元非常复杂,需要很长时间来准备。我们将图片加载到后台任务中,如果它有所不同,我们降低线程的优先级以加快UI的其他部分(以及表格加载)。让这个行动成为一个主线是一个巨大的胜利。改变线程优先级的好处并不明显。 :-) – 2011-04-15 19:33:59