Ale*_*lov 9 struct memory-leaks ios automatic-ref-counting swift
在swift 类中有一个方法deinit(),我们可以在其中定义类的实例将从内存中删除.我们如何知道struct将从内存中删除?
例如,
struct Vehicle { ... }
var v: Vehicle? = Vehicle()
v = nil
Run Code Online (Sandbox Code Playgroud)
Muh*_*Ali 14
结构在超出范围时被释放。您不能将 deinit 放在结构中,但这里有一个解决方法。您可以创建一个引用类的结构,该类在释放时会打印一些内容。
class DeallocPrinter {
deinit {
print("deallocated")
}
}
struct SomeStruct {
let printer = DeallocPrinter()
}
Run Code Online (Sandbox Code Playgroud)
因此,当结构被释放时——如果你还没有复制结构,它会在它被释放时打印释放,因为 DeallocPrinter 将在结构被释放的同时被释放。
小智 6
一种简单的方法是使用虚拟类。只需创建一个空类并在那里实现 deinit() 即可。然后在你的结构中使用这个类作为成员,pe
let dummyClass = DummyClass()
Run Code Online (Sandbox Code Playgroud)
一旦结构被释放,类的 deinit() 函数就会被调用。如果没有,那么就会出现内存泄漏。
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |