Sobes.tech
Junior — Middle

Můžeš uvést příklad, kdy je objekt třídy vytvořen na zásobníku místo na haldě?

sobes.tech AI

Odpověď od AI

V iOS jsou objekty tříd obvykle vytvářeny na haldě, protože třídy jsou referenční typy. Pokud však používáte struktury (struct), které jsou hodnotové typy, jsou vytvářeny na zásobníku.

Příklad:

struct Point {
    var x: Int
    var y: Int
}

func createPoint() {
    let p = Point(x: 10, y: 20) // vytvořeno na zásobníku
    print(p)
}

Zde je Point strukturou a proměnná p je vytvořena na zásobníku. U tříd například:

class Person {
    var jméno: String
    init(jméno: String) {
        self.jméno = jméno
    }
}

func createPerson() {
    let osoba = Person(jméno: "John") // objekt na haldě, odkaz na něj na zásobníku
    print(osoba.jméno)
}

Tedy, objekty tříd jsou vytvářeny na haldě, zatímco struktury na zásobníku.