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.