Sobes.tech
Middle

Δημιουργείται άμεσα μια παρουσίαση της προβολής μετά τη δημιουργία του ελεγκτή;

sobes.tech AI

Απάντηση από AI

Όχι. Το αντίγραφο της προβολής (view) για έναν ελεγκτή τύπου UIViewController δημιουργείται αργά, κατά την πρώτη πρόσβαση στην ιδιότητα view.

Το UIKit δεν δημιουργεί την προβολή αμέσως μετά την αρχικοποίηση του ελεγκτή για βελτιστοποίηση πόρων. Η προβολή μπορεί να είναι οπτικά πολύπλοκη και να απαιτεί πολύ μνήμη και χρόνο επεξεργαστή για να δημιουργηθεί. Δημιουργώντας την "τεμπέλικα", μόνο όταν είναι πραγματικά απαραίτητο για την εμφάνιση στην οθόνη, το σύστημα εξοικονομεί πόρους.

Αυτή η διαδικασία συμβαίνει, για παράδειγμα, όταν ο ελεγκτής προστίθεται στην ιεραρχία προβολών ενός άλλου ελεγκτή ή παραθύρου, ή όταν καλείται ρητά η ιδιότητα view. Αν ο ελεγκτής έχει αρχικοποιηθεί, αλλά ποτέ δεν εμφανίζεται ή χρησιμοποιείται, η προβολή του δεν θα δημιουργηθεί.

Ο κύκλος ζωής του ελεγκτή και η δημιουργία της προβολής περιλαμβάνει τα ακόλουθα βασικά σημεία:

  1. init(coder:) ή init(nibName:bundle:): Ο ελεγκτής αρχικοποιείται, αλλά η view εξακολουθεί να είναι nil.
  2. Πρώτη πρόσβαση στην view: Αν η view είναι nil, το σύστημα καλεί τη μέθοδο loadView().
  3. loadView(): Σε αυτή τη μέθοδο εσείς (ή το σύστημα από προεπιλογή) δημιουργείτε την ριζική προβολή του ελεγκτή και την αναθέτετε στην ιδιότητα view.
  4. viewDidLoad(): Αυτή η μέθοδος καλείται μετά το φορτίο της προβολής και την ανάθεση στην ιδιότητα view. Εδώ συνήθως γίνεται η διαμόρφωση των υπο-προβολών, η φόρτωση δεδομένων και άλλες ενέργειες που εξαρτώνται από την ύπαρξη της προβολής.

Παράδειγμα υπερχείλισης της loadView():

override func loadView() {
    // Αντί να φορτώσετε από το Storyboard/XIB ή να δημιουργήσετε ένα κενό UIView
    // δημιουργούμε τη δική μας προσαρμοσμένη προβολή
    let customView = CustomContentView()
    view = customView
    // Εδώ, η view δεν είναι πλέον `nil`
}

Είναι σημαντικό να θυμάστε ότι, στις περισσότερες περιπτώσεις, δεν θα υπερχρεώνετε άμεσα το loadView(), αλλά θα βασίζεστε στην τυπική υλοποίηση του UIKit, η οποία φορτώνει την προβολή από ένα Storyboard, ένα αρχείο XIB ή δημιουργεί ένα κενό UIView από προεπιλογή. Ωστόσο, η κατανόηση πότε και πώς δημιουργείται η προβολή είναι κρίσιμη.