Junior — Middle
Μπορείς να δώσεις ένα παράδειγμα όταν ένα αντικείμενο κλάσης δημιουργείται στη στοίβα αντί για το σωρό;
sobes.tech AI
Απάντηση από AI
Στο iOS, τα αντικείμενα κλάσεων δημιουργούνται συνήθως στο σωρό, καθώς οι κλάσεις είναι τύποι αναφοράς. Ωστόσο, αν χρησιμοποιείτε δομές (struct), που είναι τύποι τιμής, δημιουργούνται στη στοίβα.
Παράδειγμα:
struct Point {
var x: Int
var y: Int
}
func createPoint() {
let p = Point(x: 10, y: 20) // δημιουργείται στη στοίβα
print(p)
}
Εδώ, το Point είναι δομή, και η μεταβλητή p δημιουργείται στη στοίβα. Για τις κλάσεις, για παράδειγμα:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
func createPerson() {
let person = Person(name: "John") // αντικείμενο στο σωρό, αναφορά σε αυτό στη στοίβα
print(person.name)
}
Έτσι, τα αντικείμενα κλάσεων δημιουργούνται στο σωρό, ενώ οι δομές στη στοίβα.