Kuidas iOS-s on rakendatud automaatne ja käsitsi mälu haldus ning milliseid mehhanisme kasutatakse resursi haldamiseks?
sobes.tech AI
Vastus AI-lt
iOS-is mäluhaldus põhineb peamiselt kahel peamisel viisil: automaatsel ja käsitsi.
-
Automaatne mäluhaldus (ARC — Automaatne viidete arv)
ARC on mehhanism, mis on sisseehitatud kompilaatorisse ja lisab automaatselt retain/release kõned Objective-C ja Swift objektidele. See arvutab objekti viidete arvu ja vabastab mälu, kui arv on null.
Näide:
class Person { var name: String init(name: String) { self.name = name } } var p1: Person? = Person(name: "Иван") var p2 = p1 // viidete arv suureneb p1 = nil // arv väheneb p2 = nil // objekt vabastatakse -
Käsitsi mäluhaldus
Vanemates iOS versioonides (enne ARC-d) kutsus arendaja käsitsi välja meetodid
retain,releasejaautorelease, et hallata objektide elutsüklit. -
Resursside haldamine
Lisaks mälule kasutatakse ressursside (failid, võrguliidesed, ajastajad) haldamiseks mudeleid nagu
deinitSwiftis, mis vabastab ressursid objekti hävitamisel.Samuti kasutatakse laialdaselt konstruktsioone nagu
autoreleasepool, et hallata ajutisi objekte.
Seega lihtsustab ARC märkimisväärselt mälu haldamist, vähendab lekkimise tõenäosust ning käsitsi haldamine kasutatakse harva ja ainult spetsiifilistes olukordades.