Tru*_*an1 2 memory-leaks ios swift
我正在研究iOS中可能存在的内存泄漏陷阱,并且我不断遇到强大的参考周期.这已经变得很清楚了,即使在Apple的文档中,我也能找到关于内存泄漏的唯一内容.
还有哪些其他原因可以避免内存泄漏?
在Objective-C中,静态分析器(shift- command- B)可以帮助识别许多类型的泄漏.除了简单的强参考周期之外,如果您没有将ARC与Objective-C一起使用,那么它很容易泄漏.如果您正在使用Core Foundation对象(特别是在Objective-C中)并且不小心,则很容易泄漏.静态分析器非常擅长识别这些简单问题.
但回过头来,Apple讨论了三种常见的内存问题:
泄漏的内存:无法再次访问的内存.
这方面的例子是Core Foundation类型的错误桥接,强引用周期等.
被遗弃的内存:无法再次访问的内存.
这样的一个例子是视图控制器中的循环引用(从A到B再到A再次,而不是弹出/消除回A).原始的A视图控制器仍然存在,理论上可以访问它的对象,但你永远不会这样做,因为你现在正在使用A的新实例.
缓存内存:可以再次访问的内存(但您可能会或可能不会再次访问它).
一个例子就是使用imageNamedwith UIImage,它可以缓存图像,以防你将来再次需要它,无论你是否真的这样做.
适当的缓存机制将响应内存压力并在这些情况下清除缓存.但如果不这样做会导致记忆无限增长.
我建议观看一些WWDC视频,包括: