CG栅格数据 - CGProviderCreateWithCopyOfData - 无法释放?

7

我正在尝试找到内存泄漏的源头,如此详细地说明在这里:

无法释放Quartz 2D和Core Text创建的图像

当我使用仪器时,我可以看到有一个名为CG Raster Data的东西不断增长,却从未被释放。

有人知道可能导致这种情况的原因以及如何解决吗?看起来这可能是某种图像缓存,但是否可能从代码中清除它?


如果关闭此屏幕,内存是否会被释放?如果是的话,那么您需要在使用图像的代码周围添加@autoreleasepool(这可能是一个循环)。 - Timur Kuchkarov
你能附上你的代码吗? - Vitalii Gozhenko
1个回答

0
我曾经碰到一个问题,就是通过反复推入和弹出视图控制器来增加CG Raster Data内存。我花了一些时间认为这是一些绘图代码的问题。最后我发现,原来是一个代理没有弱引用被推入和弹出的视图控制器,所以当我弹出视图控制器时,它没有被释放。CG Raster Data恰好是该视图控制器占用空间最大的部分,因此我最初错误地将问题归属于它,而实际上是视图控制器本身没有被释放(因此无法释放其视图,其中一些具有CG Raster Data)。
简而言之:如果您看到使用CG Raster Data的内存泄漏,请查看视图控制器可能会带有视图,并确保它们被正确释放。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接