我正在使用以下代码来旋转图像
http://www.platinumball.net/blog/2010/01/31/iphone-uiimage-rotation-and-scaling/
这是我在将图像上传到服务器之前进行的为数不多的图像转换之一,我还有其他一些转换:normalize,crop,resize。
每个转换返回(UIImage*)
,我使用类别添加这些函数。我这样用它:
UIImage *img = //image from camera;
img = [[[img normalize] rotate] scale] resize];
[upload img];
每次在XCode中收到内存警告消息后,从相机中选择3~4张照片并执行相同的代码。
我猜我某处有内存泄漏(即使我使用ARC)。我在使用xCode调试工具方面不是很有经验,所以我开始在每种方法之后打印保留计数。
UIImage *img = //image from camera;
img = [img normalize];
img = [img rotate]; // retain count increases :(
img = [img scale];
img = [img resize];
增加保留计数的唯一操作是旋转。这是正常的吗?
答案 0 :(得分:2)
增加保留计数的唯一操作是旋转。这是正常的吗?
UIGraphicsGetImageFromCurrentImageContext()
功能中的rotate
调用很可能最终会保留图像。如果是这样,它几乎肯定也会自动释放图像,以符合正常的Cocoa内存管理规则。无论哪种方式,你都不应该担心它。只要您的rotate
功能本身不包含任何不平衡retain
(或alloc
,new
或copy
)来电,您就应该期待没有泄漏。如果你确实怀疑有泄漏,最好用仪器跟踪它而不是自己看retainCount
。