Sobes.tech
Junior — Middle

თქვენ გამოიყენეთ თქვენი პროექტებში Unowned ტიპის მიმთითებელი ცვლადები?

sobes.tech AI

პასუხი AI-სგან

დიახ, iOS პროექტებში მე გამოვიყენე unowned ტიპის მიმთითებლები.

unowned არის სუსტი მიმთითებელი ტიპი, რომელიც არ ზრდის მიმთითებლის გამრიცხველს, მაგრამ ვარაუდობს, რომ მიმთითებელი ობიექტი ყოველთვის იქნება გამოყენების დროს.

ეს სასარგებლოა ძლიერი მიმთითებლების ციკლების თავიდან აცილებისთვის, მაგალითად, დახურვებში ან ობიექტებს შორის ურთიერთმიმართვებში, როდესაც ერთი ობიექტი გარანტიას იძლევა, რომ ის უფრო ხანგრძლივია, ვიდრე მეორე.

unowned გამოყენების მაგალითი:

class Person {
    let name: String
    var apartment: Apartment?
    
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    unowned let tenant: Person
    
    init(unit: String, tenant: Person) {
        self.unit = unit
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt

აქ, tenant გამოაცხადა როგორც unowned, რადგან ბინა არ უნდა არსებობდეს უქირავებლის გარეშე, და ეს ხელს უშლის ძლიერი მიმთითებლების ციკლს.