Kako je u iOS implementiran automatski i ručni rad sa memorijom, i koji mehanizmi se koriste za upravljanje resursima?
sobes.tech АИ
Одговор од АИ
U iOS-u, upravljanje memorijom se uglavnom sprovodi na dva načina: automatski i ručno.
-
Automatsko upravljanje memorijom (ARC — Automatsko brojanje referenci)
ARC je mehanizam ugrađen u kompajler koji automatski dodaje pozive na retain/release za Objective-C i Swift objekte. Broji broj referenci na objekat i oslobađa memoriju kada broj dostigne nulu.
Primer:
class Person { var name: String init(name: String) { self.name = name } } var p1: Person? = Person(name: "Иван") var p2 = p1 // broj referenci se povećava p1 = nil // broj se smanjuje p2 = nil // objekat se oslobađa -
Ručno upravljanje memorijom
U starijim verzijama iOS-a (pre ARC-a), programer je ručno pozivao metode
retain,releaseiautoreleaseza upravljanje životnim ciklusom objekata. -
Upravljanje resursima
Pored memorije, za upravljanje resursima (fajlovi, mrežne veze, tajmeri) koriste se obrasci poput
deinitu Swift-u za oslobađanje resursa pri uništenju objekta.Takođe se široko koriste konstrukcije poput
autoreleasepoolza upravljanje privremenim objektima.
Na ovaj način, ARC značajno pojednostavljuje rad sa memorijom, smanjuje verovatnoću curenja memorije, a ručno upravljanje se retko koristi i samo u specifičnim slučajevima.