Sobes.tech
Junior — Middle

Kas saaksite selgitada, millised andmetüübid esindavad mälus olevate objektide viiteid?

sobes.tech AI

Vastus AI-lt

iOS-is, mälus objekti viitab näidatud näidete abil, kuid omadustega, mis sõltuvad andmetüübist ja mälu haldamisest.

Peamised viitamise tüübid:

  • Tugev viide (strong reference) — standardne viide, mis hoiab objekti mälus. Kuni on vähemalt üks tugev viide, objekti ei kustutata.

  • Nõrk viide (weak reference) — ei hoia objekti mälus. Kui objekt kustutatakse, muutub nõrk viide automaatselt nil-iks, vältides "ripuvad" näidikud.

  • Mitteomandav viide (unowned reference) — sarnane nõrgale, kuid eeldab, et objekt eksisteerib kogu viite eluea jooksul. Kui objekt kustutatakse, põhjustab sellele viidates juurdepääs krahhi.

Näide Swiftis:

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var tugevViide: Person? = Person(name: "Alice") // tugev viide
weak var nõrkViide = tugevViide                 // nõrk viide
unowned var mitteomandavViide = tugevViide!          // mitteomandav viide

tugevViide = nil // objekt kustutatakse, nõrkViide muutub nil-iks, mitteomandavViide muutub kehtetuks

Nii aitavad viitamise tüübid hallata objektide elutsüklit ja vältida mälulekkeid ning tsüklilisi viiteid.