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.