Πολλά μαθήματα σε κακάο / Cocoa Touch έχουν το πρόθεμα NS. Τι σημαίνει?
Τι σημαίνει το πρόθεμα NS;
Ο αρχικός κωδικός για τα πλαίσια το κακάο ήρθαν από τον NEXTSTEP Ίδρυμα βιβλιοθήκες και AppKit (οι ονομασίες αυτές χρησιμοποιούνται ακόμα από τα πλαίσια κακάο της Apple), και οι μηχανικοί NextStep επέλεξε το πρόσημο των χαρακτήρων τους με NS.
Επειδή Objective-C είναι μια επέκταση της C και, επομένως, δεν έχει χώρους ονομάτων όπως στη C ++, σύμβολα πρέπει να προτάσσεται με ένα μοναδικό πρόθεμα, έτσι ώστε να μην συγκρούονται. Αυτό είναι ιδιαίτερα σημαντικό για τα σύμβολα που ορίζονται σε ένα πλαίσιο.
Αν γράφετε μια εφαρμογή, έτσι ώστε κωδικό σας είναι μόνο πιθανό ποτέ να χρησιμοποιούν τα σύμβολα σας, δεν έχετε να ανησυχείτε για αυτό. Αλλά αν είστε γράφει ένα πλαίσιο ή μια βιβλιοθήκη για χρήση των άλλων, θα πρέπει επίσης να πρόθεμα χαρακτήρες σας με ένα μοναδικό πρόθεμα. CocoaDev έχει μια σελίδα όπου πολλοί προγραμματιστές στην κοινότητα κακάο παραθέτουμε τους «επέλεξε» προθέματα. Μπορείτε επίσης να βρείτε αυτή τη συζήτηση SO χρήσιμες.
Είναι από την NEXTSTEP κληρονομιά.
Ν ext S ΤΣΑ ή Ν eXTSTEP / S un ανάλογα με το ποιος ζητάτε.
Sun είχε μια αρκετά μεγάλη επένδυση σε OpenStep για λίγο. Πριν Ήλιος εισήλθε στην εικόνα τα περισσότερα πράγματα στο ίδρυμα, έστω και αν δεν ήταν γνωστό ως το θεμέλιο τότε, ήταν πρόθεμα NX , για Ν ε Χ Τ, και κάποια στιγμή λίγο πριν εισέλθει Sun το ό, τι εικόνα μετονομάστηκε σε NS . Η S πιθανότατα δεν αντιπροσωπεύουν Sun, στη συνέχεια, αλλά μετά Sun περπάτησε στη γενική συναίνεση ήταν ότι στάθηκε για Sun για να τιμήσει τη συμμετοχή τους.
Εγώ πραγματικά είχε μια αναφορά για αυτό, αλλά δεν μπορώ να το βρείτε τώρα. Θα ενημερώσω τη θέση, αν / όταν μπορώ να το βρω και πάλι.
Είναι η NextStep (= NS) κληρονομιά. NeXT ήταν η εταιρεία ηλεκτρονικών υπολογιστών που ο Steve Jobs σχηματίστηκε μετά εγκατέλειψε την Apple το 1985, και NextStep ήταν αυτό είναι το λειτουργικό σύστημα (UNIX βάση) μαζί με τη γλώσσα Στόχου-C και χρόνου εκτέλεσης. Μαζί με αυτό είναι οι βιβλιοθήκες και τα εργαλεία, NextStep μετονομάστηκε αργότερα OpenStep (που ήταν και το όνομα σε ένα API που NeXT που αναπτύχθηκε από κοινού με τη Sun), το οποίο με τη σειρά του έγινε αργότερα το κακάο.
Αυτά τα διαφορετικά ονόματα είναι στην πραγματικότητα αρκετά συγκεχυμένη (ιδίως δεδομένου ότι μερικά από τα ονόματα διαφέρει μόνο στο οποίο οι χαρακτήρες είναι κεφαλαία ή πεζά ..), δοκιμάστε αυτό για μια εξήγηση:
Από έγγραφα για την ανάπτυξη της Apple:
Ιστορική Σημείωση: Αν αναρωτιέστε γιατί τόσοι πολλοί από τους κλάδους που αντιμετωπίζουν έχουν πρόθεμα NS, είναι επειδή του παρελθόντος ιστορία του κακάο και το κακάο Touch. Κακάο άρχισε τη ζωή ως τα συλλεγόμενα πλαίσια που χρησιμοποιούνται για την κατασκευή εφαρμογών για το λειτουργικό σύστημα NextStep. Όταν η Apple αγόρασε NeXT πίσω στο 1996, ένα μεγάλο μέρος της NEXTSTEP ενσωματώθηκε στο OS X, συμπεριλαμβανομένων των υφιστάμενων ονόματα της κατηγορίας. Κακάο Touch εισήχθη ως ισοδύναμο iOS του Cocoa? μερικά μαθήματα είναι διαθέσιμα σε δύο κακάο και κακάο Touch, αν και υπάρχουν επίσης ένα μεγάλο αριθμό κατηγοριών μοναδικό για κάθε πλατφόρμα. Δύο επιστολή προθέματα όπως NS και UI (για τα στοιχεία διεπαφής χρήστη για iOS) προορίζονται για χρήση από την Apple.
Από Cocoa_ (API) Wikipedia :
(Υπογράμμιση δική μου)
Τάξεις κακάο αρχίζει με το ακρωνύμιο «NS» (μόνιμη είτε για τη δημιουργία της επόμενης Ήλιος της OpenStep , ή για την αρχική ιδιόκτητο όρος για το πλαίσιο OpenStep, NEXTSTEP ): NSString, NSArray, κ.λπ.
Ίδρυμα Kit , ή πιο συχνά απλά Ιδρύματος , εμφανίστηκε για πρώτη φορά στην OpenStep . Σε Mac OS X, που βασίζεται σε πυρήνα του Ιδρύματος. Ίδρυμα είναι γενόσημο αντικειμενοστρεφής βιβλιοθήκη παρέχοντας χορδών και την αξία χειραγώγηση, δοχεία και επανάληψη, κατανεμημένα υπολογιστικά, τρέχουν βρόχους, και άλλες λειτουργίες που δεν είναι άμεσα συνδεδεμένη με την γραφική διεπαφή χρήστη. Το πρόθεμα «NS» , που χρησιμοποιείται για όλες τις κατηγορίες και σταθερές στο πλαίσιο, προέρχεται από OPENSTEP κληρονομιά κακάο, το οποίο αναπτύχθηκε από κοινού NeXT και Sun .
Όταν NeXT ήταν ορισμό του API NextStep (σε αντίθεση με το λειτουργικό σύστημα NEXTSTEP), χρησιμοποίησαν το πρόθεμα NX, όπως στην NXConstantString. Όταν έγραφαν την προδιαγραφή OpenStep με τη Sun (δεν πρέπει να συγχέεται με το λειτουργικό σύστημα OPENSTEP) χρησιμοποίησαν το πρόθεμα NS, όπως στην NSObject.
Bill Bumgarner γνωστός και ως @bbum, οι οποίοι θα πρέπει να γνωρίζουν , δημοσιεύτηκε στην λίστα CocoaBuilder το 2005 :
Ήλιος εισήλθε στην εικόνα λίγο μετά το πρόθεμα NS είχε έρθει στο προσκήνιο. Το πρόθεμα NS ήρθε περίπου σε δημόσιους APIs κατά τη μετάβαση από NEXTSTEP 3,0 έως NEXTSTEP 4,0 (επίσης γνωστή ως OpenStep). Πριν από 4,0, μια χούφτα των συμβόλων που χρησιμοποιούνται το πρόθεμα NX, αλλά τα περισσότερα μαθήματα που παρέχονται από τις βιβλιοθήκες του συστήματος δεν προτάσσεται σε όλους - Κατάλογος, Hashtable, Θέα, κλπ ...
Φαίνεται ότι όλοι συμφωνούν ότι το NX πρόθεμα (για την NeXT) χρησιμοποιήθηκε μέχρι το 1993/1994, και έγγραφα της Apple λέει :
Η επίσημη OpenStep API, που δημοσιεύθηκε τον Σεπτέμβριο του 1994, ήταν ο πρώτος για να χωρίσει το API μεταξύ του Ιδρύματος και κιτ εφαρμογής και το πρώτο για να χρησιμοποιήσετε το «NS» πρόθεμα.
Βασικά NS προέρχεται από την Ν ext S ΤΣΑ, το αρχικό λειτουργικό σύστημα που έγινε το Mac OS X της Apple, όταν απέκτησε Επόμενο.
Θέλω να εξηγήσω κάτι άλλο και γι 'αυτό ακριβώς που χρειάζεται.
Στην C ++ υπάρχουν χώροι ονομάτων και σχεδόν τίποτα πηγαίνει στο std
Αυτός είναι ο λόγος που έχουν std :: εγχόρδων.
Τα πεδία ονομάτων που χρησιμοποιούνται γι 'αυτό είναι πιο δύσκολο για σας να κάνετε κάποιο λάθος και μπορείτε να γράψετε τη δική σας εγχόρδων τάξη, χωρίς να έρχονται σε σύγκρουση με το σύστημα ένα.
Objective-C είναι υπερσύνολο της C, αλλά δεν περιλαμβάνει χώρους ονομάτων και για τον ίδιο λόγο παραπάνω όλες τις κατηγορίες του συστήματος είναι preffixed με NS ή κάποιο άλλο περίεργο preffix.
Αυτό το πράγμα είναι η ίδια για το πώς όλες οι DirectX τάξεις preffixed με D3D και πως όλες οι OpenGL τάξεις preffixed με gl .
Αυτό σημαίνει ότι δεν πρέπει να χρησιμοποιείτε NS να αναφέρουμε τις δικές σας κατηγορίες και όταν δείτε NS , CA στο πυρήνα Animation ή CG σε πυρήνα γραφικών καταλαβαίνετε ότι αυτό είναι μια πρόσκληση σε ένα πλαίσιο συστήματος.
Swift αλλαγές η σύμβαση αυτή, επειδή Swift υποστηρίζει χώρου ονομάτων και χάρτες βασικών τύπων της, όπως String με τα ισοδύναμα NS.
Είναι από την κληρονομιά NEXTSTEP
Επόμενο βήμα. Είναι μια συνεχιστής από όταν στόχος-c δημιουργήθηκε από NeXT να γράψει NextStep (αργότερα OS X) και όλες συνδέονται εφαρμογές, κλπ Αντιπροσωπεύουν στοιχεία που δεν αποτελούν μέρος του αρχικού θεμέλια C, για παράδειγμα, δεν υπάρχει «κορδόνι» στοιχείο σε C, έτσι ώστε σε αντικειμενική-c, είναι ένα πρόσθετο στοιχείο θεμελίωσης «NSString».













