Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, kādi ir datu tipi, kas pārstāv atsauces uz objektus atmiņā?

sobes.tech AI

Atbilde no AI

iOS atmiņā objektiem ir attēloti ar norādītājiem, taču ar īpašībām, kas ir atkarīgas no datu tipa un atmiņas pārvaldības.

Galvenie norādītāju tipi:

  • Stiprs norādītājs (strong reference) — standarta norādītājs, kas uztur objektu atmiņā. Tikmēr ir vismaz viens stiprs norādītājs, objekts netiks dzēsts.

  • Vājais norādītājs (weak reference) — neuztur objektu atmiņā. Ja objekts tiek dzēsts, vājais norādītājs automātiski kļūst par nil, novēršot "karājošus" norādītājus.

  • Nepieciešamais norādītājs (unowned reference) — līdzīgs vājam, bet pieņem, ka objekts pastāv visu tā dzīves cikla laiku. Ja objekts tiek dzēsts, piekļuve nepiederošajam norādītājam izraisīs avāriju.

Piemērs Swift:

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

var stiprsNorādītājs: Person? = Person(name: "Alice") // stiprs norādītājs
weak var vājšNorādītājs = stiprsNorādītājs                 // vājš norādītājs
unowned var nepiederošsNorādītājs = stiprsNorādītājs!          // nepiederošs norādītājs

stiprsNorādītājs = nil // objekts tiek dzēsts, vājšNorādītājs kļūst par nil, nepiederošsNorādītājs kļūst nederīgs

Šādi, norādītāju tipi palīdz pārvaldīt objektu dzīves ciklu un novērst atmiņas noplūdes un cikliskās norādes.