抱歉,我对内存管理有疑问
我创建了一个"用户"对象。
当我结束使用时,我想把它作为租用内存的零。
我试了但是我失败了
我有什么问题?
var user:User? = User(userId)
user?.fromJson(data["user"])
self.users[userId] = user
user?.updateDb()
user = nil
答案 0 :(得分:1)
如果"用户"是参考类型
当您创建对象referenceCount在1
时递增当您在“字典”中将用户设置为" userId" referenceCount在1
上递增和referenceCount == 2
在user = nil之后,删除1个引用
referenceCount == 1
并保留1个强引用,对象未被删除
答案 1 :(得分:0)
在大多数情况下,您不必担心对对象进行取消初始化。 Swift与它的前身Objective-C一样,使用自动引用计数(ARC)来跟踪哪些对象仍在使用,哪些对象需要删除。简而言之,如果没有对某个对象的强引用,它将自动被取消分配。
在您的情况下,您定义了user
局部变量。如果你没有在其他地方存储对该变量的引用,那么在你离开声明它的范围后它将立即被释放。