Avatar ·

ما الفرق بين المراجع 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") } }