【发布时间】: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