Η διαφορά μεταξύ της δομής και της κλάσης στο γρήγορο.

Κάθε γρήγορος προγραμματιστής με τουλάχιστον 6 μήνες εμπειρίας γνωρίζει το Struct, το Enum και την Class. Ο καθένας τους χρησιμοποιεί τακτικά χωρίς να γνωρίζει τι, πότε και πού να τα χρησιμοποιήσει. Προσπαθώ να το κάνω απλό.

πηγή εικόνας: stocksnap

Τύποι τιμών και τύποι αναφοράς

Πληροφορίες: TreeHouse, Apple doc.

Όταν πρόκειται για Enums, Structs and Classes, είναι σημαντικό να γνωρίζετε τη διαφορά μεταξύ των τύπων αξίας και των δεδομένων. Όταν δημιουργείτε έναν αριθμό ή μια δομή, είναι ένας τύπος τιμής και η κλάση είναι τύπος αναφοράς.

  • Τύπος τιμής: Δομή, Enum
  • Τύπος αναφοράς: Κλάση

Όταν μεταβιβάζετε ένα αντικείμενο κλάσης γύρω από την εφαρμογή σας, στην πραγματικότητα συνδέεστε με αυτό το αντικείμενο, έτσι ώστε διαφορετικά μέρη του προγράμματος σας να μπορούν να μοιράζονται και να τροποποιούν το αντικείμενο σας. Όταν περάσετε ένα βέλος [ή enum] γύρω από το πρόγραμμά σας, θα έχετε ένα αντίγραφο αυτής της δομής. Έτσι, οι αλλαγές που έγιναν στις δομές δεν μπορούν να ανταλλαγούν.

Ένα σημαντικό πλεονέκτημα των τύπων αξίας είναι ότι είναι ασφαλείς στο νήμα, το οποίο δεν απαιτεί συγχρονισμό.
Διαβάστε το άρθρο μου σχετικά με τον Τύπο τιμής σε σχέση με τον τύπο αναφοράς για να μάθετε περισσότερα σχετικά με τους τύπους τιμών και τους τύπους αναφοράς.
Διαβάστε το άρθρο μου στο Enums αμέσως για να μάθετε περισσότερα για το Enums.
Μια κλάση παράδειγμα είναι γενικά γνωστή ως ένα αντικείμενο. Είναι καλύτερο να χρησιμοποιούμε τον όρο Instan, γιατί ασχολούμαστε επίσης με το strum και enum.

Κατηγορίας

Στο OOP, μια τάξη είναι ένα σχέδιο για τη δημιουργία ξεχωριστών αντιγράφων.

Μια κλάση είναι ένα σχέδιο δημιουργίας αντικειμένων (παραμέτρων ή χαρακτηριστικών μελών) και συμπεριφοράς (λειτουργίες ή μέθοδοι μελών) για τη δημιουργία αντικειμένων (τη δομή συγκεκριμένων δεδομένων).

Ορίζουμε την κλάση χρησιμοποιώντας τη λέξη-κλειδί.

Δομή

Η δομή είναι παρόμοια με την κλάση όσον αφορά την επισήμανση και τη δημιουργία δείγματος.

Ορίζουμε τη δομή χρησιμοποιώντας μια δομική λέξη-κλειδί.

Ποιοι είναι οι συνήθεις παράγοντες μεταξύ της δομής και της τάξης;

  • Ορίστε ιδιότητες για να αποθηκεύσετε τιμές
  • Ορίστε τους τρόπους παροχής λειτουργικότητας
  • Χρησιμοποιήστε δέσμες ενεργειών για να ορίσετε δέσμες ενεργειών που τους δίνουν πρόσβαση στις τιμές τους
  • Ορίστε τις αρχικές λειτουργίες για να προσαρμόσετε την κατάσταση εκκίνησης
  • Εκτός από τη συνήθη εφαρμογή, θα επεκταθεί για να επεκτείνει τη λειτουργικότητά τους
  • Προσαρμογή στα πρωτόκολλα για την παροχή τυπικών λειτουργιών συγκεκριμένου τύπου

Οι κλάσεις έχουν πρόσθετες λειτουργίες που δεν περιλαμβάνονται:

  • Η κληρονομιά επιτρέπει σε μια τάξη να κληρονομήσει τα χαρακτηριστικά ενός άλλου. Η δομή ή το enum δεν μπορεί να κληρονομηθεί. Αλλά μπορούν να εγκρίνουν πρωτόκολλα.
  • Το Type Casting σάς επιτρέπει να ελέγχετε και να ερμηνεύετε μια παρουσία μιας εργατικής τάξης.
  • Ο Deinitiator επιτρέπει στην κλάση να απελευθερώσει πόρους που έχει εκχωρήσει.
  • Ο υπολογισμός αναφοράς επιτρέπει περισσότερες από μία τάξεις αναφοράς.
Καθώς η κλάση υποστηρίζει τον τύπο αναφοράς και την κληρονομικότητα, η πολυπλοκότητα αυξάνεται. Στις περισσότερες περιπτώσεις, η δομή πρέπει να είναι επαρκής για να καλύψει τις ανάγκες σας. Χρησιμοποιήστε την τάξη ανάλογα με τις ανάγκες ή ανάλογα με τις ανάγκες.

Σύνταξη

Ορίζουμε μια κλάση χρησιμοποιώντας τη λέξη-κλειδί της κλάσης και τη λέξη-κλειδί struct. Η σύνταξη είναι η ίδια τόσο για τη δομή όσο και για την κλάση.

Μέλος εκκίνησης για τους τύπους δομών

Όλες οι δομές έχουν έναν εκκινητή που ενεργοποιεί το μέλος αυτόματης παραπομπής, τον οποίο μπορείτε να χρησιμοποιήσετε για να ξεκινήσετε τις ιδιότητες ιδιότητας μέλους των νέων παρουσιών δομής. Μπορείτε να περάσετε τις αρχικές τιμές στον αρχικοποιητή για τις ιδιότητες του νέου δείγματος:

δομή ακρίβειας {
var πλάτος = 0
var ύψος = 0
}}
πρόσβαση vga = Ανάλυση (πλάτος: 640, ύψος: 480)

Σε αντίθεση με τις ενσωματώσεις, τα αντίγραφα κλάσης δεν λαμβάνουν πρότυπο πρότυπο αρχικοποίησης.

Σημείωση: Εάν η μεταβλητή δομής είναι ιδιωτική, το αρχικό όνομα του μέλους είναι ιδιωτικό. σε αυτή την περίπτωση, πρέπει να παρέχουμε ένα πρόγραμμα εκκίνησης που βασίζεται στην κοινότητα.

Πότε και πού πρέπει να χρησιμοποιηθούν;

Στόχος - Στο C, όλα είναι υποκλάσεις από το NSObject. NSString, NSArray και άλλοι είναι όλα τα είδη αναφοράς. Από την άλλη πλευρά, υπάρχουν πλούσιοι τύποι αξίας. Το String, Array, Glossary, κτλ. Είναι μια γρήγορη δομή που είναι ένας τύπος αξίας. Υπάρχουν πολλά πλεονεκτήματα για τη χρήση ενός τύπου τιμής σε σύγκριση με έναν τύπο δεδομένων.

Διαβάστε το άρθρο μου σχετικά με τον Τύπο τιμής σε σχέση με τον τύπο αναφοράς για να μάθετε περισσότερα σχετικά με τους τύπους τιμών και τους τύπους αναφοράς.

Νομίζω ότι πρέπει να χρησιμοποιήσουμε τη δομή διότι αν η δομή γίνει υπερβολικά μεγάλη ή απαιτεί κληρονομικότητα, μπορεί να μειώσει σημαντικά την πολυπλοκότητα και τη μείωση των τάξεων.

  • Οι δομές είναι πολύ πιο ασφαλείς και χωρίς σφάλματα, ειδικά σε πολύπλευρα περιβάλλοντα. Οι τύποι γρήγορης τιμής υποστηρίζονται. Κάθε νήμα έχει τη δική της τιμή στη διαδικασία, επομένως καμία άλλη τιμή δεν μπορεί να έχει απευθείας πρόσβαση στον τύπο τιμής σας. Έτσι, δεν υπάρχει πολυπλοκότητα των συνθηκών αγώνα, κλειδαριές, κλειδαριές ή οποιουδήποτε σχετικού συγχρονισμού.
  • Χρησιμοποιήστε τάξεις εάν θέλετε τύπους δεδομένων. Αν θέλετε τύπους τιμών, χρησιμοποιήστε βελονιές.
  • Παρόλο που το περιεχόμενο και το enum δεν υποστηρίζουν την κληρονομιά, είναι εξαιρετικά για τον προγραμματισμό που βασίζεται σε πρωτόκολλο. Η υποκατηγορία κληρονομεί όλες τις απαιτούμενες και ανεπιθύμητες λειτουργίες από την υπερκλάση και είναι μια κακή πρακτική προγραμματισμού. Είναι προτιμότερο να χρησιμοποιήσετε ένα πρωτόκολλο λογισμικού.
  • Η τάξη υποστηρίζει την κληρονομιά. Μια κλάση είναι ένας τύπος αναφοράς και αποθηκεύεται σε μια μνήμη, η οποία, όσον αφορά την απόδοση, δημιουργεί μια πιο αργή τάξη από τη δομή. Σε αντίθεση με την τάξη, δημιουργείται μια δομή γυαλιού. Έτσι, η ταχύτητα (και η καταστροφή) μιας δομής είναι ταχύτερη από μια κατηγορία. Αν η δομή δεν είναι μέλος της κατανεμημένης τάξης, η οποία, μεταξύ άλλων, συλλέγεται.
  • Οι τύποι κόστους δεν χρειάζεται να εκχωρούν δυναμική μνήμη ή υπολογιστικά δεδομένα, και τα δύο είναι δαπανηρές συναλλαγές. Ταυτόχρονα, οι τύποι τιμών αποστέλλονται στατικά. Αυτά παρέχουν ένα μεγάλο πλεονέκτημα από πλευράς απόδοσης όσον αφορά τους τύπους αξίας.

Πρέπει να διαβάσετε: Επιλογή μεταξύ περιεχομένου και κλάσεων - Apple doc

Απολαύστε!

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

Μπορείτε να με ακολουθήσετε για άρθρα στα μέσα του άρθρου. Επίσης, επικοινωνήστε μαζί μου στο LinkedIn.

Εάν έχετε οποιεσδήποτε παρατηρήσεις, ερωτήσεις ή συμβουλές, μη διστάσετε να τις δημοσιεύσετε στην παρακάτω ενότητα σχολίων!