【发布时间】:2018-03-14 14:30:18
【问题描述】:
我正在尝试学习 iOS 开发中的内存管理。我看了这篇文章/教程:Make Memory Management Great Again
在那篇教程中,类中有一个deinit 方法,如下所示:
class Human {
var passport: Passport?
let name: String
init(name: String) {
self.name = name
}
deinit {
print("I'm gone, friends")
}
}
创建实例后,引用计数为 1,因为它是强引用。直到这一步,我明白了。
var bob: Human? = Human(name: "Bob Lee")
据说当我们创建一个实例时,它实际上会占用我们的 RAM 空间。
如果我们将 nil 分配给 'bob' 变量,deinit 将打印(“我走了,朋友们”),并且关系不再存在,因此引用计数变为 0,这将导致两个对象都被释放。
让我困惑的事情:
在我的实际代码/我遵循的教程中,我从来没有在我的课程中看到“deinit”,我从来没有将 nil 分配给实例,所以该对象永远不会被释放,它会占用我的内存空间像脂肪一样?我应该在我的代码中写 deinit 吗?因为我认为如果空间有限,它会被数据对象填充,最终我的应用程序会崩溃
据说:
自动引用计数以指示对象是否静止 正在使用或不再需要
不再需要?什么意思?
【问题讨论】:
标签: ios swift memory-management memory-leaks