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.