ما الفرق بين المراجع weak و unowned في Swift عند إدارة الذاكرة؟
مرحبًا بالجميع! أنا أدرس Swift وأحاول فهم ARC (Automatic Reference Counting). قرأت التوثيق لكنني لا أستطيع فهم الفرق بين المراجع 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")
}
}