Junior — Middle
Мо метавонед шарҳи кунед, ки дар контексти идораи хотира чӣ маъно дорад термин 'Unowned'?
sobes.tech AI
Ҷавоб аз AI
في سياق إدارة الذاكرة في iOS (و Swift)، مصطلح "Unowned" يعني مرجع ضعيف إلى كائن، لا يزيد من عداد المراجع (retain count)، ولكنه يفترض أن الكائن موجود أثناء استخدام هذا المرجع.
الاختلافات عن weak:
- المرجع
weakيمكن أن يصبحnilإذا تم حذف الكائن، ولهذا يُعلن عنه كاختياري. - المرجع
unownedغير اختياري ولا يتم تعيينه تلقائيًا إلىnil. إذا تم حذف الكائن الذي يشير إليهunowned، فإن محاولة الوصول إليه ستؤدي إلى خطأ في وقت التشغيل (crash).
يُستخدم عندما يتم ضمان أن عمر الكائن المشار إليه أطول أو يساوي عمر المرجع.
مثال:
class Owner {
var pet: Pet?
}
class Pet {
unowned let owner: Owner
init(owner: Owner) {
self.owner = owner
}
}
let owner = Owner()
owner.pet = Pet(owner: owner)
هنا، يحتفظ Pet بمرجع unowned إلى Owner، مع افتراض أن Owner يعيش أطول من Pet.