Sobes.tech
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)
}

Έτσι, τα αντικείμενα κλάσεων δημιουργούνται στο σωρό, ενώ οι δομές στη στοίβα.