Sobes.tech
Junior — Middle

Tudsz példát mondani arra, mikor egy osztályobjektum a veremben jön létre a heap helyett?

sobes.tech MI

Válasz az MI-től

Az iOS-ben az osztályobjektumokat általában a heapen hozzák létre, mivel az osztályok referencia típusok. Azonban, ha struktúrákat (struct) használunk, amelyek érték típusok, akkor azok a stacken jönnek létre.

Példa:

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

func createPoint() {
    let p = Point(x: 10, y: 20) // a stacken jön létre
    print(p)
}

Itt a Point egy struktúra, és a p változó a stacken jön létre. Osztályok esetén például:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

func createPerson() {
    let person = Person(name: "John") // objektum a heapen, a hivatkozás rá a stacken
    print(person.name)
}

Így az osztályobjektumok a heapen jönnek létre, míg a struktúrák a stacken.