Sobes.tech
Junior — Middle

Ako je v iOS implementovan automatický a manuálny prístup k pamäti a aké mechanizmy sa používajú na správu zdrojov?

sobes.tech AI

Odpoveď od AI

V iOS je správa pamäte implementovaná hlavne dvoma spôsobmi: automatickým a ručným.

  1. Automatické riadenie pamäte (ARC — Automatické počítanie referencií)

    ARC je mechanizmus zabudovaný do kompilátora, ktorý automaticky pridáva volania retain/release pre objekty Objective-C a Swift. Počítava počet odkazov na objekt a uvoľní pamäť, keď sa čítač dostane na nulu.

    Príklad:

    class Person {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
    var p1: Person? = Person(name: "Иван")
    var p2 = p1 // počet odkazov sa zvyšuje
    p1 = nil // počet sa znižuje
    p2 = nil // objekt je uvoľnený
    
  2. Ručné riadenie pamäte

    Vo starších verziách iOS (pred ARC), vývojár ručne volal metódy retain, release a autorelease na správu životného cyklu objektov.

  3. Správa zdrojov

    Okrem pamäte sa na správu zdrojov (súbory, sieťové spojenia, časovače) používajú vzory ako deinit v Swift na uvoľnenie zdrojov pri zničení objektu.

    Taktiež sa široko používajú konštrukcie ako autoreleasepool na správu dočasných objektov.

Týmto spôsobom ARC výrazne zjednodušuje prácu s pamäťou, znižuje pravdepodobnosť únikov a ručná správa sa zriedka používa a len v špecifických prípadoch.