我是 iOS 的新手:我正在创建一个简单的应用程序,我可以在其中在图像上添加绘图:并且我可以更改绘图的颜色。 . . .
画了一段时间后,我在 iPad 模拟器上收到以下错误
CGBitmapContextInfoCreate: unable to allocate 1478400 bytes for bitmap data
这大约是 1.5MB。 . . .这怎么会是个问题? 我究竟做错了什么 ?
我的应用程序允许我在 JPEG 文件上绘图,Jpeg 文件本身只有 111KB 我在 Single UIImageView 中绘图,所以我不认为释放对象是问题 - 是吗?
非常感谢任何指导
最佳答案
您只能通过 Objective-C
获得 ARC
支持,因此当您使用不是用 Objective-C 编写的框架时,您需要负责内存管理
。如果您正在创建许多大对象(如 1.5 MB 位图上下文)并且从不释放这些对象,您上面描述的内容可能会成为问题。
您应该熟悉 Memory Management Programming Guide for Core Foundation .要点是,如果您使用 Copy
或 Create
一词调用函数,或者您在 Core Foundation 上调用 CFRetain
(或类似方法)样式对象(即 CGContextRef
),您“拥有”它,并且您有责任在某个时候配对调用 CFRelease
以放弃您的所有权。如果不这样做,对象将永远存在,最终会耗尽堆空间。
关于iOS 模拟器 - 无法为应用程序分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176808/