Junior — Middle
Πώς είναι οργανωμένη η δομή μνήμης για την αποθήκευση δεδομένων στο πρόγραμμα;
sobes.tech AI
Απάντηση από AI
Στο iOS, η δομή μνήμης για την αποθήκευση δεδομένων σε ένα πρόγραμμα οργανώνεται συνήθως ως εξής:
- Στοίβα (Stack): αποθηκεύει τοπικές μεταβλητές και κλήσεις συναρτήσεων. Γρήγορη κατανομή και απελευθέρωση μνήμης.
- Σύνολο (Heap): δυναμική κατανομή μνήμης για αντικείμενα και δομές που ζουν περισσότερο από την κλήση της συνάρτησης.
- Τμήμα Δεδομένων: για στατικές και παγκόσμιες μεταβλητές.
- Τμήμα Κώδικα: για τον μηχανικό κώδικα του προγράμματος.
Για παράδειγμα, όταν δημιουργείτε ένα αντικείμενο κλάσης σε Swift ή Objective-C, η μνήμη για αυτό καταχωρείται στο σύνολο, και η αναφορά στο αντικείμενο αποθηκεύεται στη στοίβα. Η αυτόματη διαχείριση μνήμης στο iOS πραγματοποιείται μέσω του ARC (Automatic Reference Counting), που παρακολουθεί τον αριθμό των αναφορών στα αντικείμενα και ελευθερώνει τη μνήμη όταν δεν χρειάζεται πλέον.
Παράδειγμα:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
func createPerson() {
let person = Person(name: "Ivan") // αντικείμενο στο σύνολο, αναφορά στη στοίβα
print(person.name)
} // μετά την έξοδο από τη συνάρτηση, η αναφορά διαγράφεται, το ARC ελευθερώνει το αντικείμενο αν δεν υπάρχουν άλλες αναφορές