Avatar ·

Swift内存管理中weak和unowned引用有什么区别?

大家好!我正在学习Swift,并试图理解ARC(自动引用计数)。我阅读了文档,但还是无法理解weak和unowned引用之间的区别。它们似乎都不会增加引用计数,但区别在哪里呢? 我有一个这样的例子。我正在编写一个简单的应用程序,包含用户个人资料及其头像。如果用户离开屏幕,我希望Profile对象及其Avatar对象能从内存中释放。但由于强引用循环,我遇到了内存泄漏。 以下是我的简化代码: ```swift class Profile { let name: String var avatar: Avatar? init(name: String) { self.name = name print("Profile \(name) created") } deinit { print("Profile \(name) deallocated") } } class Avatar { let imageName: String var profile: Profile? // 问题在这里 init(imageName: String) { self.imageName = imageName print("Avatar \(imageName) created") }