UIImage imageWithData泄漏(GCD)

Posted

技术标签:

【中文标题】UIImage imageWithData泄漏(GCD)【英文标题】:UIImage imageWithData leak (GCD) 【发布时间】:2011-02-11 10:45:30 【问题描述】:

您好,我收到 Instrument 报告的泄漏,代码如下。

dispatch_async(requestQueue, ^

        NSURL *urlRequest = [NSURL URLWithString:url];

        NSError *error = nil;
        NSData *imageData = [NSData dataWithContentsOfURL:urlRequest
                                                  options:0
                                                    error:&error];
        if (error != nil)
        
            NSLog(@"%@ %@", [error localizedDescription], [error localizedFailureReason]);

            [[[[UIAlertView alloc] initWithTitle:[error localizedDescription]
                                         message:[error localizedFailureReason]
                                        delegate:nil
                               cancelButtonTitle:NSLocalizedString(@"OK", nil)
                               otherButtonTitles:nil] autorelease] show];
            return;
        

        dispatch_async(dispatch_get_main_queue(), ^

            image = [UIImage imageWithData:imageData];
            if (delegate != nil && [delegate respondsToSelector:@selector(imageRequestDone:)])              
            
                [delegate imageRequestDone:image];
            
        );
    ); 

Leaks 报告我的 image = [UIImage imageWithData:imageData] 泄漏,有什么想法吗? 对于自动释放的 UIImage 对象,我需要一个 NSAutoreleasePool 吗?

顺便说一句,我声明了 __block UIImage *image = nil;上面是因为我在输入上面的代码之前检查了 ImageCache 中的图像。

【问题讨论】:

【参考方案1】:

你还没有释放你的队列:dispatch_release(requestQueue);

【讨论】:

您好,感谢您的建议。但它没有帮助。但是当我回到家并在我自己的计算机仪器上运行我的代码时没有报告泄漏?也许是仪器中的错误?工作一段时间后,我根本无法运行泄漏,其他人也有同样的问题吗?泄漏“轨道”变成黄色。

以上是关于UIImage imageWithData泄漏(GCD)的主要内容,如果未能解决你的问题,请参考以下文章

imageWithData图像尺寸变大了?

SDWebImage源码阅读(十三)UIImage+MultiFormat

Swift 4 ImageIO_jpeg_Data 中的内存泄漏 UIImage

iOS - 调整图像大小导致内存泄漏

是drawRect----泄漏内存

imageWithContentsOfFile 返回 nil 和 imageWithData 返回 nil