Junior — Middle
Σε ποιο σημείο θα τοποθετηθεί η δομή, αν μέσα της υπάρχει ένα πεδίο που αποτελεί παράδειγμα μιας κλάσης;
sobes.tech AI
Απάντηση από AI
Στο iOS, αν μια δομή (struct) περιέχει ένα πεδίο που είναι ένα στιγμιότυπο μιας κλάσης (class), η ίδια η δομή τοποθετείται στη στοίβα (stack), ενώ το πεδίο της κλάσης βρίσκεται στον σωρό (heap).
Αυτό συμβαίνει επειδή οι δομές είναι τύποι τιμών, που αποθηκεύονται άμεσα εκεί που δηλώνονται (συνήθως στη στοίβα), ενώ οι κλάσεις είναι τύποι αναφοράς, των οποίων τα αντικείμενα τοποθετούνται στον σωρό, και στη δομή αποθηκεύεται μόνο μια αναφορά σε αυτό το αντικείμενο.
Παράδειγμα:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Εδώ, το s είναι μια δομή που τοποθετείται στη στοίβα, και το αντικείμενο MyClass(value: 10) βρίσκεται στον σωρό, και στο s.obj αποθηκεύεται μια αναφορά σε αυτό το αντικείμενο.