【发布时间】:2010-07-28 22:45:04
【问题描述】:
我有一个小的 iPhone 应用程序,它在第一个视图上有一个按钮。当我选择这个按钮时,我会加载我的新视图,上面有一个图像。我目前正在使用以下代码在单独的线程上从在线源加载图像,同时允许用户继续控制应用程序:
- (void) loadImageTest
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSURL *url = [[NSURL alloc] init];
url = [NSURL URLWithString:logoPath];
NSData *data = [[NSData alloc] init];
data = [NSData dataWithContentsOfURL:url];
loadingImage = [UIImage imageWithData:data];
titleLogoImage.image = loadingImage;
//[pool drain];
[pool release];
}
这是从新视图的 init 中的这行代码调用的:
[NSThread detachNewThreadSelector:@selector(loadImageTest) toTarget:self withObject:nil];
现在这工作正常(ish),但如果我关闭新视图,然后快速连续(或在某些情况下只是之后)再次加载新视图,它将被经典的 EXC_BAD_ACCESS 炸毁。我确定这是由于线程池中的代码造成的,但是任何人都知道为什么会这样吗?
谢谢
【问题讨论】:
标签: iphone nsthread nsautoreleasepool