iphone - 将 UIImage 用于 CGContextSetFillColorWithColor 时突然出现内存峰值

标签 iphone ios cocoa-touch uikit core-graphics

我使用图像来填充当前图形上下文中的颜色,使用以下语句:

CGContextSetFillColorWithColor(aContext,[[UIColor colorWithPatternImage:[UIImage imageNamed:kRunnerGradientedBackgroundImage]] CGColor]);

此语句突然使我的内存使用量从 1.3 MB 飙升至 5.6 MB。如果我释放 UIImage 对象,那么它会下降到 1.3 MB,但由于图像对象的保留计数已经为 0,我不能这样做。

有什么建议可以控制这种突然的内存峰值吗?

最佳答案

模式数据必须加载到内存中才能使用。没有绕过那个。你可以试试更小的图案。当您完成图案绘制后,还可以尝试将上下文的填充颜色设置回简单的纯色。

添加:当您在其中绘制图案或图像时,图形上下文本身也可能变得更大(以容纳图案图像所需的所有像素)。尝试移除并释放包含图形上下文的 UIView 或 CGLayer。

关于iphone - 将 UIImage 用于 CGContextSetFillColorWithColor 时突然出现内存峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7959248/

相关文章:

iphone - 如何在代码中更改 UIBarButtonItem 的样式

iphone - 闹钟iOS

ios - 添加 UITableViewController.view 作为 subview 表现不佳

iphone - 锁定 ViewController 的方向

ios - 更改 UISegmentedControl 的字体大小

iphone - iPhone客户端的表单验证逻辑和错误消息

ios - 单元测试时的 Swift 和 Obj-c 互操作性问题

ios - Apple 要求所有应用程序更新在 2019 年 3 月之前使用 iOS 12 SDK 构建

objective-c - Obj-C,我如何记录一个方法在几秒钟内花费的时间?

ios - geocodeAddressString 不适用于某些地址