首先,感谢这个网站上的每个人...它对于深入了解 iOS 编程非常有帮助。
我当前的问题:
我有一个应用程序可以渲染非常风格化的照片版本。它使用一些 CoreImage 过滤器来处理其中的一些内容,但需要一堆 CoreGraphics 来完成繁重的图像处理。
代理大小渲染效果很好,但是当我渲染图像的全分辨率版本时,它有时会因为内存使用率过高而崩溃。问题是渲染时我需要能够在内存中拥有多个全分辨率(3264x2448)缓冲区。我不知道什么或如何释放更多内存。我一直非常小心地尽可能地匹配 CGImageRelease。
对于 ARC,我如何知道某些内容是否真的已发布并释放?将对象设置为 nil 并不会真正执行任何操作。
我怀疑我是否可以以任何方式将其流式传输到磁盘。
任何建议将不胜感激!
THANKS!
ARC 在这种情况下并没有什么区别。
这只是意味着你不必打电话release
靠你自己。
对于非 ARC,在内存不足的情况下,您可能想要释放一些您并不真正需要的属性(这意味着它们可以根据需要重新创建)。
- ( void )didReceiveMemoryWarning:
{
[ _myProperty release ];
_myProperty = nil;
[ super didReceiveMemoryWarning ];
}
在ARC下,完全一样,只不过不用调用release
:
- ( void )didReceiveMemoryWarning:
{
_myProperty = nil;
[ super didReceiveMemoryWarning ];
}
将您的属性设置为nil
会在ARC下自动释放它。
所以它确实做了一些事情。
如果它对你不起作用,那么你肯定有另一个问题。
确保你没有内存泄漏,也没有保留周期 http://cocoawithlove.com/2009/07/rules-to-avoid-retain-cycles.html.
最后一个肯定是有问题的...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)