Δημιουργείται άμεσα μια παρουσίαση της προβολής μετά τη δημιουργία του ελεγκτή;
sobes.tech AI
Απάντηση από AI
Όχι. Το αντίγραφο της προβολής (view) για έναν ελεγκτή τύπου UIViewController δημιουργείται αργά, κατά την πρώτη πρόσβαση στην ιδιότητα view.
Το UIKit δεν δημιουργεί την προβολή αμέσως μετά την αρχικοποίηση του ελεγκτή για βελτιστοποίηση πόρων. Η προβολή μπορεί να είναι οπτικά πολύπλοκη και να απαιτεί πολύ μνήμη και χρόνο επεξεργαστή για να δημιουργηθεί. Δημιουργώντας την "τεμπέλικα", μόνο όταν είναι πραγματικά απαραίτητο για την εμφάνιση στην οθόνη, το σύστημα εξοικονομεί πόρους.
Αυτή η διαδικασία συμβαίνει, για παράδειγμα, όταν ο ελεγκτής προστίθεται στην ιεραρχία προβολών ενός άλλου ελεγκτή ή παραθύρου, ή όταν καλείται ρητά η ιδιότητα view. Αν ο ελεγκτής έχει αρχικοποιηθεί, αλλά ποτέ δεν εμφανίζεται ή χρησιμοποιείται, η προβολή του δεν θα δημιουργηθεί.
Ο κύκλος ζωής του ελεγκτή και η δημιουργία της προβολής περιλαμβάνει τα ακόλουθα βασικά σημεία:
init(coder:)ήinit(nibName:bundle:): Ο ελεγκτής αρχικοποιείται, αλλά ηviewεξακολουθεί να είναιnil.- Πρώτη πρόσβαση στην
view: Αν ηviewείναιnil, το σύστημα καλεί τη μέθοδοloadView(). loadView(): Σε αυτή τη μέθοδο εσείς (ή το σύστημα από προεπιλογή) δημιουργείτε την ριζική προβολή του ελεγκτή και την αναθέτετε στην ιδιότηταview.viewDidLoad(): Αυτή η μέθοδος καλείται μετά το φορτίο της προβολής και την ανάθεση στην ιδιότηταview. Εδώ συνήθως γίνεται η διαμόρφωση των υπο-προβολών, η φόρτωση δεδομένων και άλλες ενέργειες που εξαρτώνται από την ύπαρξη της προβολής.
Παράδειγμα υπερχείλισης της loadView():
override func loadView() {
// Αντί να φορτώσετε από το Storyboard/XIB ή να δημιουργήσετε ένα κενό UIView
// δημιουργούμε τη δική μας προσαρμοσμένη προβολή
let customView = CustomContentView()
view = customView
// Εδώ, η view δεν είναι πλέον `nil`
}
Είναι σημαντικό να θυμάστε ότι, στις περισσότερες περιπτώσεις, δεν θα υπερχρεώνετε άμεσα το loadView(), αλλά θα βασίζεστε στην τυπική υλοποίηση του UIKit, η οποία φορτώνει την προβολή από ένα Storyboard, ένα αρχείο XIB ή δημιουργεί ένα κενό UIView από προεπιλογή. Ωστόσο, η κατανόηση πότε και πώς δημιουργείται η προβολή είναι κρίσιμη.