iPad (mini) 升级到iOS7后,我的绘画应用程序在几笔之后开始出现延迟和崩溃。
现在,当我在 Xcode 5 中使用Instruments /内存分配工具运行该应用程序时,我发现CG光栅数据类别在屏幕上画图时迅速填满。似乎有大量的CGDataProviderCreateWithCopyOfData调用,每个大小为3.00Mb。连续绘制后,应用程序收到内存警告并通常终止。
该代码基本上会将路径涂抹到图像上下文中,差不多是这样的:
UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
在iOS7/iPad上,这个应用非常卡顿并且存在内存问题,而在iOS6上则相对流畅且没有负面的内存印记。
当我在非Retina iPhone版本中运行此代码时,CGDataProviderCreateWithCopyOfData调用大小为604Kb,同时只有一个或两个处于“活动”状态。绘图流畅快速,没有内存警告和减速现象。
iOS6和iOS7之间发生了什么关于CoreGraphics和imagecontexts的内容?
对于任何术语错误或其他可能的愚蠢错误,我表示抱歉。作为一名新手,我只是在业余时间进行iOS开发。