Sobes.tech
Junior — Middle

Koja referenca, slaba (weak) ili neposedna (unowned), obezbeđuje viši performans pri korišćenju u Swift-u?

sobes.tech АИ

Одговор од АИ

U Swift-u, slaba (weak) referenca je opcionalna referenca koja automatski postaje nil kada se objekat na koji se odnosi oslobodi. Neposedni (unowned) referenca nije opcionalna i pretpostavlja da objekat uvek postoji tokom pristupa, i ne postaje nil.

Što se tiče performansi, unowned (neposedni) referenci rade malo brže jer ne zahtevaju proveru na nil pri pristupu, za razliku od weak (slabih) koje su uvek opcionalne i zahtevaju proveru. Međutim, razlika u performansama je obično neznatna i ne bi trebalo da bude odlučujući faktor pri izboru.

Koristite unowned kada ste sigurni da referenca neće postati nil tokom korišćenja, i weak kada objekat može biti oslobođen i želite da izbegnete visiće reference.

Primer:

class Owner {
    var pet: Pet?
}

class Pet {
    unowned let owner: Owner
    init(owner: Owner) {
        self.owner = owner
    }
}

Ovde se koristi unowned jer pet uvek postoji zajedno sa owner-om, i owner ne može biti nil tokom života pet-a.