所以我的方法中下面的代码,我想从在线源设置一个UIImageView图像的那一个:

[NSThread detachNewThreadSelector:@selector(loadImage) toTarget:self withObject:nil];

然后,在由该线程调用该方法我有这样的:

- (void) loadImage
{
    NSURL *url = [NSURL URLWithString:logoPath]; // logoPath is an NSString with path details
    NSData *data = [NSData dataWithContentsOfURL:url];

    logoImage.image = [UIImage imageWithData:data];
}

这个伟大的工程,但是我相处的线调试器控制台内的许多警告:

  

2010-05-10 14:30:14.052   ProjectTitle [2930:633f] ***   _NSAutoreleaseNoPool():类NSHTTPURLResponse的对象0x169d30   自动释放与地方没有游泳池 -   只是泄漏

这会发生很多次,每次我所说的新的线程,然后最终,在任何模式时,需要调用一些这些线程我得到了经典的“EXC_BAD_ACCESS”运行时错误后。

据我所知,这种情况正在发生,因为我不保留该对象但如何可以与上述示于“的LoadImage”的代码解决这个?

由于

有帮助吗?

解决方案

您需要创建线程,你不显式释放对象,否则不会得到释放一个自动释放池。见苹果文档,这实际上告诉你做到以下几点:

- (void)myThreadMainRoutine
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Top-level pool

  // Do thread work here.

  [pool release];  // Release the objects in the pool.
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top