Junior
Swift-də weak yaddaş modifikatoru nədir?
sobes.tech Süni İntellekt
AI-dan cavab
weak dəyişəni obyektlər arasında güclü referans dövrlərini pozmaq üçün istifadə olunur; bir obyekt digərinə güclü referans tutursa və bu obyekt də öz növbəsində geri güclü referansa malikdirsə.
weak-in əsas xüsusiyyətləri:
- İstinad sayğacını artırmır:
weakistifadə edilməsi obyektə güclü referansların sayını artırmır. nilola bilər: Zəif referans (Optional) kimi olur və avtomatik olaraqnil-ə çevrilir, obyekt deinitializasiya olunduqda.- Valideyn/uşaq münasibətlərində istifadə olunur: Uşaq obyektinin valideyninə referansı, güclü referans dövrlərini qarşısını almaq üçün tez-tez tətbiq edilir.
varkimi elan edilməlidir: Çünki zəif referansnilola bilər, o, dəyişən (var) kimi elan edilməlidir,letkimi deyil.
İstifadə nümunəsi:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
print("\(name) başlanır")
}
deinit {
print("\(name) sonlandırılır")
}
}
class Apartment {
let unit: String
weak var tenant: Person? // Zəif referans
init(unit: String) {
self.unit = unit
print("Mənzil \(unit) başlanır")
}
deinit {
print("Mənzil \(unit) sonlandırılır")
}
}
Apartment sinifində weak var tenant: Person? olmadan, güclü referans dövrləri yaranar və Person və Apartment nümunələri, başqa güclü referanslar olmadıqda, deinitializasiya olunmazlar. weak sayəsində, Person nümunəsi deinitializasiya olunduqda, Apartment içindəki tenant referansı avtomatik olaraq nil-ə çevrilir.