UPDATE这段代码其实不是问题所在;注释掉所有CoreGraphics行并返回数组中的第一个图像,因为结果并不能防止崩溃的发生,所以我必须向上游看。CoreGraphics内存警告和崩溃;仪器显示没有内存泄漏
我在75ms NSTimer上运行这个。它适用于480x360的图像,并且可以整天运行而不会崩溃。
但是,当我发送的图像是1024x768,它会在大约20秒后崩溃,给出了几个低内存警告。
在这两种情况下,仪器都显示绝对正常的内存使用情况:平面分配图,小于一兆字节的活动字节,整个时间无泄漏。
那么,这是怎么回事?核心图形不知何故使用太多内存而不显示它?
另外值得一提的是:(NSMutableArray *)imgs中没有那么多图像 - 通常是三个,有时是两个或四个。无论如何崩溃。只有两个时,碰撞速度稍快。
- (UIImage*) imagefromImages:(NSMutableArray*)imgs andFilterName:(NSString*)filterName {
UIImage *tmpResultant = [imgs objectAtIndex:0];
CGSize s = [tmpResultant size];
UIGraphicsBeginImageContext(s);
[tmpResultant drawInRect:CGRectMake(0, 0, s.width, s.height) blendMode:kCGBlendModeNormal alpha:1.0];
for (int i=1; i<[imgs count]; i++) { [[imgs objectAtIndex:i] drawInRect:CGRectMake(0, 0, s.width, s.height) blendMode:kCGBlendModeMultiply alpha:1.0]; }
tmpResultant = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return tmpResultant;
}
崩溃日志显示多少内存?你使用'[UIImage imageNamed:]'? – Kevin
我没有在任何地方使用[UIImage imageNamed:] - 所有图像都从相机捕获并发送到imageBuffer类,该类返回图像的NSMutableArrays。它崩溃而没有崩溃日志输出,但在设备日志中,它看起来像进程正在使用62582个页面。 –