项目中使用到了这个方法colorWithPatternImage, 一般的写法是

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];

由于是公司内部产品, 要求兼容IOS系统3.0-5.0, 所以拿了各种版本机器测试! 发现这个方法在有一些系统上内存泄漏, 直到奔溃!

 

要考虑iphone4高清, 这个图本身在内存占用大概2MB内存, 然后屏幕旋转或者其他的一些需要换图的操作, 这个方法就会重新执行一边, 内存就++2MB, 不一会儿就奔溃了!

当然并非所有的系统都有这个问题! 可能是系统的一个bug, 模拟器调试没任何问题, 我的iphone4, 4.3.3系统没问题!

由于机器有限, 部分测试结果如下, 希望能帮助一些人:

iphone4        都没问题
iphone3gs    4.2.1系统和4.1有问题, 4.3没问题
iphone3        4.2.1系统有问题, 3.1系统没问题
ipad              3.2系统没问题

 

国外的一些用户也发现了这个问题, 解决的方法就是不用这个方法设置背景颜色罗! 

​http://www.cocoabyss.com/coding-practice/colorwithpatternimage-abusive-memory-usage/​

​http://www.tuzzolotron.com/?p=118​