Ten*_*Jay 8 memory memory-management optional ios swift
我在我的一个应用程序中使用了大量的音频,视频和图像,似乎存在轻微的内存问题,并且想知道释放内存的最佳方法是什么.
我使用了很多这样的可选变量:
var myImageView: UIImageView?
Run Code Online (Sandbox Code Playgroud)
我想知道一旦你知道你不再需要它来释放这样的内存,将它们设置为nil是否被认为是最佳做法:
myImageView = nil
Run Code Online (Sandbox Code Playgroud)
似乎将它设置为nil将删除最后一个强引用并导致它被释放,但我也不希望在可能的情况下将XXXX = nil的代码丢弃.
我还考虑过为使用这个变量的类创建一个deinit方法,并在那里执行如下操作:
deinit {
myImageView = nil
}
Run Code Online (Sandbox Code Playgroud)
唯一的事情是我使用的实例在再次使用之前实际上没有被破坏.但通常当一个实例被销毁时,它的所有选项也应该被释放,对吧?
从Apple 关于自动参考计数(ARC)的文档中,他们说:
Swift使用自动引用计数(ARC)来跟踪和管理应用程序的内存使用情况.在大多数情况下,这意味着内存管理在Swift中"正常工作",您不需要自己考虑内存管理.当不再需要这些实例时,ARC会自动释放类实例使用的内存.
以下部分对您来说很有趣
但是,在少数情况下,ARC需要有关代码部分之间关系的更多信息,以便为您管理内存.
你还没有发布任何代码,所以我不知道你是否有弱引用,无主引用,闭包的强引用周期等.
例如,如果您有一个强大的关闭引用循环,如上面的文档链接所述:
当您使用类类型的属性时,Swift提供了两种解决强引用循环的方法:弱引用和无引用引用.
我认为阅读文档会对您有所帮助,因为它可以让您清楚地了解ARC在Swift中的工作原理.
归档时间: |
|
查看次数: |
2045 次 |
最近记录: |