我正在使用 coverFlow View 开发 iPhone 应用程序,当应用程序构建卡片时,它使用 UIView 来添加标签和其他内容。然后我使用以下代码将 UIView 转换为 UIImage:
UIGraphicsBeginImageContext(imageView.bounds.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// returning the UIImage
return viewImage;
每次重新绘制 coverflow 时,都会产生巨大的内存分配增量,即使我释放 coverFlow View ,该增量也永远不会减少。
我认为内存泄漏出现在我添加的代码中,您认为如何?
最佳答案
您提供的代码片段中没有明显的内存泄漏。由于UIGraphicsBeginImageContext()
,该操作无法在后台线程上执行。 ,所以你应该有一个 NSAutoreleasePool
就位(UIGraphicsGetImageFromCurrentContext()
的返回值是自动释放的)。如果没有更多信息,就不可能判断内存泄漏可能在哪里 - 我建议您查看最终拥有 viewImage 对象的任何对象,并确保在保留 UIImage 时正确释放它。
关于iphone - 将 UIview 转换为 UIimage 导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1775873/