如何在swift中删除类对象?

时间:2017-08-31 07:12:50

标签: ios swift memory-management

抱歉,我对内存管理有疑问 我创建了一个"用户"对象。
当我结束使用时,我想把它作为租用内存的零。
我试了但是我失败了 我有什么问题?

var user:User? = User(userId)
user?.fromJson(data["user"])
self.users[userId] = user
user?.updateDb()
user = nil

2 个答案:

答案 0 :(得分:1)

如果"用户"是参考类型

当您创建对象referenceCount在1

时递增

当您在“字典”中将用户设置为" userId" referenceCount在1

上递增

和referenceCount == 2

在user = nil之后,删除1个引用

referenceCount == 1

并保留1个强引用,对象未被删除

答案 1 :(得分:0)

在大多数情况下,您不必担心对对象进行取消初始化。 Swift与它的前身Objective-C一样,使用自动引用计数(ARC)来跟踪哪些对象仍在使用,哪些对象需要删除。简而言之,如果没有对某个对象的强引用,它将自动被取消分配。

在您的情况下,您定义了user局部变量。如果你没有在其他地方存储对该变量的引用,那么在你离开声明它的范围后它将立即被释放。