我有一个小iPhone应用程序,它在第一个视图上有一个按钮。当我选择这个按钮,我加载了我的新视图,其上有一个图像。我目前使用下面的代码加载从一个单独的线程在线源的图像,同时允许用户继续控制应用:iPhone上的NSAutoreleasePool问题
- (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。我确信这是由于线程池中的代码引起的,但任何人都可以看到为什么会发生这种情况?
谢谢
僵尸会救你。 http://www.cocoadev.com/index.pl?NSZombieEnabled – 2010-07-28 22:46:22