Γιατί το iboutlet είναι αδύναμο;

Γιατί το iboutlet είναι αδύναμο;
Γιατί το iboutlet είναι αδύναμο;
Anonim

Το

@IBOutlet κάνει το Interface Builder να αναγνωρίζει την έξοδο. private διασφαλίζει ότι η πρίζα δεν είναι προσβάσιμη εκτός της τρέχουσας τάξης. ασθενές χρησιμοποιείται επειδή στις τις περισσότερες περιπτώσεις ο κάτοχος της πρίζας δεν είναι ο ίδιος με τον κάτοχο της προβολής. Για παράδειγμα, ένας ελεγκτής προβολής δεν έχει κάποια ετικέτα - η προβολή του ελεγκτή προβολής.

Τα IBOutlets πρέπει να είναι αδύναμα;

Η επίσημη απάντηση από την Apple είναι ότι τα IBOutlets πρέπει να είναι ισχυρά. Η μόνη περίπτωση που ένα IBOutlet θα πρέπει να είναι αδύναμο είναι για να αποφευχθεί ένας κύκλος διατήρησης. Ένας ισχυρός κύκλος αναφοράς μπορεί να οδηγήσει σε διαρροές μνήμης και σφάλματα εφαρμογής.

Τι είναι το IBOutlet Swift;

Ο προσδιορισμός τύπου IBOutlet είναι μια ετικέτα που εφαρμόζεται σε μια δήλωση ιδιότητας έτσι ώστε η εφαρμογή Interface Builder να μπορεί να αναγνωρίσει την ιδιότητα ως έξοδο και να συγχρονίσει την εμφάνιση και τη σύνδεσή της με το Xcode. Μια πρίζα δηλώνεται ως αδύναμη αναφορά (αδύναμη) για την αποφυγή ισχυρών κύκλων αναφοράς.

Τι είναι η αδύναμη αναφορά στο Swift;

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

Ποια είναι η διαφορά μεταξύ αδύναμου και δυνατού στο Swift;

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

Συνιστάται: