Junior — Middle
შეგიძლიათ მიაწოდოთ მაგალითი, როდის გამოიყენება `unowned` ოპერატორი Swift-ის კოდში?
sobes.tech AI
პასუხი AI-სგან
Swift-ში unowned ოპერატორი გამოიყენება სუსტი მითითების გამოცხადებისთვის, რომელიც არ არის ვარიანტული და ვარაუდობს, რომ ის ობიექტი, რომელსაც ის ეხება, ყოველთვის არსებობს წვდომის დროს. ეს სასარგებლოა ძლიერი მითითების ციკლების თავიდან ასაცილებლად, მაგალითად, დახურვებთან ან ურთიერთმიმართავ ობიექტებთან მუშაობისას, როდესაც ერთ-ერთი ობიექტი გარანტირებულია, რომ უფრო ხანგრძლივია ვიდრე მეორე.
unowned გამოყენების მაგალითი დახურვაში:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
}
lazy var printApartment = { [unowned self] in
if let apt = self.apartment {
print("\(self.name) ცხოვრობს ბინაში \(apt.number)")
} else {
print("\(self.name) ბინა არ აქვს")
}
}
}
class Apartment {
let number: Int
unowned let tenant: Person
init(number: Int, tenant: Person) {
self.number = number
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt1 = Apartment(number: 101, tenant: john)
john.apartment = apt1
john.printApartment() // შედეგი: John ცხოვრობს ბინაში 101
აქ, unowned გამოიყენება Apartment-დან Person-ზე მითითებისთვის, რათა თავიდან აიცილოს ძლიერი მითითების ციკლი, და ვარაუდია, რომ Person უფრო ხანგრძლივია ვიდრე Apartment.