我是mono/iPhone的新手,我正在开发一个应用程序,该应用程序使用每个页面的UIView查看PDF文档,放置在UIScrollView中。每次我滚动到下一页,只有新的页面+/- 1保留在内存中,其余的刷新(不是uiview,而是PDF页面)。
然而,当在设备上调试时,在翻了足够的页面后,应用程序崩溃了,我可以在应用程序输出中看到我收到了内存警告。
我认为这与在uiview上渲染的位图没有从内存中清除有关,所以经过一些研究,我发现了Objective C中的CGContextRelease()方法——然而,这在MonoTouch中不存在。我能找到的唯一类似的方法是在UIGraphics类中,但那只处理"当前"图形上下文,不管那是什么(我不能将它设置为一个现有的,这是肯定的)。
我如何在UIView中释放图形上下文?这可能吗?我有什么选择?在释放CGContext
实例时自动调用CGContextRelease
,或者手动(当调用Dispose
时)或当垃圾收集器(GC)运行终结器时。
如果您正在创建自己的CGContext
实例,您应该调用Dispose(或使用using
)以确保在资源将被释放时控制。否则,GC在收集它们之前可能会花费太长时间,从而导致内存不足的情况。
同样的建议适用于你在应用程序中创建的任何IDisposable
实例(即你的问题可能与其他东西有关)。
注意:你重用你的UIView吗?还是移除/处理它们?