Sobes.tech
Middle

Ako je inicializácia tried spojená s alokáciou pamäte?

sobes.tech AI

Odpoveď od AI

Po inicializácii objektu triedy sa alokuje pamäť na jeho uloženie. Tento proces zahŕňa nasledujúce kroky:

  1. Výpočet veľkosti: Systém určí objem pamäte potrebný na uloženie všetkých vlastností inštancie triedy a metadát (napríklad ukazovateľ na tabuľku virtuálnych metód).
  2. Žiadosť o pamäť: Systém odošle žiadosť na alokáciu pamäte požadovanej veľkosti na halde (heap).
  3. Alokácia pamäte: Ak je k dispozícii dostatok voľného miesta, halda alokuje blok pamäte a vráti naň ukazovateľ.
  4. Volanie inicializátora (init): Po získaní ukazovateľa na alokovanú pamäť systém zavolá príslušný inicializátor triedy (init) na nastavenie počiatočného stavu vlastností inštancie. Počas inicializácie môžu byť alokované ďalšie zdroje alebo vytvorené iné objekty.
  5. Vrátenie inštancie: Inicializátor ukončí svoju prácu a systém vráti odkaz na vytvorenú a inicializovanú inštanciu triedy.

Alokovaná pamäť zostáva obsadená, kým objekt nebude uvoľnený systémom správy pamäte (Automatic Reference Counting - ARC v iOS).

Príklad:

class MyClass {  
    var number: Int  
    var text: String  

    init(number: Int, text: String) {  
        // V tomto bode je pamäť pre inštanciu už alokovaná.  
        self.number = number // Priradenie k vlastnosti  
        self.text = text     // Priradenie k vlastnosti  
        // Inicializátor končí, objekt je pripravený na použitie.  
    }  
}  

// Vytvorenie inštancie MyClass.  
// To zahŕňa alokáciu pamäte a volanie init().  
let myObject = MyClass(number: 42, text: "Hello")