【问题标题】:UIimage drawInRect not release memoryUIimage drawInRect 不释放内存
【发布时间】:2015-10-02 03:29:03
【问题描述】:

我有以下用于获取新 UIImage 的代码。 它会被调用大约一百次。

for (int i = 0; i < [self.arrayImage count]; i++) {
    @autoreleasepool {
        UIImage *image = [self.arrayImage objectAtIndex:i];
        UIImage *newImage = [self getNewImage:image];
        // do something
    }
}

[self.arrayImage removeAllObjects];

// getNewImage 方法

- (UIImage *)getNewImage:(UIImage *)image {
    UIImage *newImage = nil;

    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
    CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);

    // do something

    [image drawInRect:rect];

    newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();
    return newImage;
}

完成后,我发现内存没有释放。 它需要将近200MB的内存。 我有什么遗漏吗?

【问题讨论】:

  • 你用newImage做什么?你是在真机上测试吗?在检查泄漏或参考周期时不要相信模拟器。
  • 我对 newImage 不做任何事情。我只是使用相同的代码进行测试。我在 iPhone6 上运行它并在调试导航器上查看内存信息。

标签: objective-c memory-management uiimage


【解决方案1】:

我发现为什么没有释放内存。 我的应用程序使用 SDWebimage ,self.arrayImage 中的图像来自 SDWebimage。 所以只需致电[[SDImageCache sharedImageCache] clearMemory] 发布这些图片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多