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")
}