使用NSThread解决从URL在iPhone上等待图像
-
25-09-2019 - |
题
所以我的方法中下面的代码,我想从在线源设置一个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.
}
不隶属于 StackOverflow