[Powered by Google Translate] [Σεμινάριο] [iOS: Γράφοντας Apps Like a Boss] [Tommy MacWilliam] [Πανεπιστήμιο του Χάρβαρντ] [Αυτό είναι CS50.] [CS50.TV] Εντάξει, ο καθένας, καλώς ήρθατε στο iOS: Γράφοντας Apps σαν αφεντικό. Το σεμινάριο θα επικεντρωθεί στο γράψιμο εφαρμογές για το iPhone και στη συνέχεια εγγράφως εφαρμογές για το iPad, και έτσι είμαστε ουσιαστικά πρόκειται να περπατήσετε μέσα δύο διαφορετικά παραδείγματα για το πώς να κάνει μια εφαρμογή, ένα απλό παιχνίδι σαν Tic Tac Toe, ή αν είστε ενδιαφέρονται περισσότερο για μια εφαρμογή, όπως κάποιο είδος των ειδήσεων αναγνώστη ή κάτι που αλληλεπιδρά με το Διαδίκτυο θα μιλήσω γι 'αυτό, καθώς και. Εδώ είναι σύντομη ατζέντα μας. Τα IOS εφαρμογές γραμμένες σε γλώσσα που ονομάζεται Objective-C, και έτσι αυτό είναι λίγο παρόμοια με C, αλλά δεν είναι πραγματικά καθόλου, έτσι θα μιλήσουμε λίγο για την ίδια τη γλώσσα και στη συνέχεια, πώς να χτίσει το iPhone εφαρμογές που χρησιμοποιούν αυτό το πρόγραμμα app ονομάζεται Xcode, τα οποία, αν δεν το έχετε κατεβάσει ακόμα διστάσετε να ξεκινήσει η λήψη τώρα. Είναι αρκετά gigabytes. Θα πρέπει να είναι δωρεάν για το App Store, έτσι θα πρέπει να έχετε έναν υπολογιστή Mac ιδανικά τρέχει την τελευταία έκδοση του OS X. Αν δεν είστε, δεν υπάρχει πρόβλημα. Έχουμε Macs στο κέντρο της επιστήμης στη διάθεσή σας εγκατασταθεί με Xcode, και έτσι αισθάνεται ελεύθερη να χρησιμοποιήσει αυτές για την ανάπτυξη. Αν θέλετε να κάνετε μια εφαρμογή, αλλά δεν έχουν έναν υπολογιστή Mac, μην ανησυχείτε. Υπάρχει αφθονία των πόρων πανεπιστημιούπολη για αυτό. Και έτσι στη συνέχεια θα πάμε να καλύψει 2 μεγαλύτερα παραδείγματα των διαφόρων εφαρμογών που μπορείτε να κάνετε. Objective-C είναι τεχνικά αυτό που ονομάζεται ένα σούπερ σύνολο C. Αυτό σημαίνει ότι κάθε κώδικας C είναι επίσης έγκυρη Objective-C κώδικα. Αυτό σημαίνει ότι το είδος του αγωγού μαγνητοσκοπημένο σε ορισμένα επιπλέον χαρακτηριστικά για να C. Μερικά από αυτά τα χαρακτηριστικά δεν χρειάζεται να περιλαμβάνουν γράψει ποτέ malloc πάλι, δόξα τω Θεώ, Δεν χρειάζεται να ανησυχείτε για τα ηλίθια δείκτες και την απελευθέρωση τους και όλα αυτά τα πράγματα που μισούσε για την C, και αυτό είναι το είδος του πάει σε Objective-C. Τώρα, Objective-C έχει επίσης μια πολύ μεγαλύτερη βιβλιοθήκη πρότυπο, έτσι υπάρχει πολύ περισσότερη λειτουργικότητα μπορείτε να πάρετε δωρεάν μέσα από Objective-C. Να θυμάστε, όταν γράφαμε PHP έχουμε παρατηρήσει ότι πήγαμε από το μικρότερο γλώσσα για τη γιγαντιαία βιβλιοθήκη του όλα αυτά τα τρελά πράγματα που μπορείτε να κάνετε. Το ίδιο συμβαίνει και στο iOS. Υπάρχει αντικείμενα για πράγματα όπως το ημερολόγιο βουδιστές, και πραγματικά τίποτα μπορείτε ενδεχομένως να σκεφτείτε ίσως υπάρχει ήδη σε εφαρμογή Objective-C της. Ο στόχος μέρος του Objective-C είναι κάτι αναφορά που ονομάζεται Αντικειμενοστρεφής Προγραμματισμός. Αυτό είναι το είδος της μια νέα έννοια, αλλά στην πραγματικότητα έχουμε μάθει ως επί το πλείστον πολλές από αυτές τις έννοιες που έχουν ήδη. Η ιδέα πίσω από Αντικειμενοστρεφής Προγραμματισμός είναι ότι θα πάμε για να δομήσει πολύ κωδικό σας γύρω από αυτά τα πράγματα που ονομάζονται τάξεις, και αυτά τα μαθήματα δοξαστεί πραγματικά structs. Μέσα από ένα struct που ουσιαστικά είπε εδώ είναι ένα πράγμα, και αυτό το πράγμα μπορεί να έχουν τα μέλη. Για παράδειγμα, ένας κόμβος σε μια συνδεδεμένη λίστα θα μπορούσε να έχει άλλα πράγματα σαν μία τιμή, ένας δείκτης προς τον επόμενο κόμβο στον κατάλογο, και μαζί ότι ο δείκτης και η αξία αυτή αποτελείται από ένα στιγμιότυπο μιας struct. Τα μαθήματα είναι πολύ παρόμοια, εκτός από τάξεις μπορούν επίσης να έχουν συναρτήσεις μέσα από αυτούς. Όταν κήρυξε struct, θα μπορούσαμε να πούμε μόνο int n * ή επόμενο κόμβο. Τώρα με Objective-C μπορούμε να βάλουμε πραγματικά λειτουργίες μέσα από αυτά τα πράγματα. Ένα άλλο πράγμα που μπορεί να κάνει μαθήματα είναι ότι μπορεί να κληρονομήσει δεδομένα από άλλες τάξεις. Για παράδειγμα, θα πρέπει να ψάχνει σε μια δέσμη των ενσωματωμένων σε Objective-C τάξεις. Ένας από αυτούς θα μπορούσε να είναι η τάξη που αντιπροσωπεύει την άποψη για μία οθόνη, και έτσι λέγοντας θέλω να εφαρμόσουν τη δική τους άποψη μου λέμε βασικά κάποιος πάνω στην Apple, κατά πάσα πιθανότητα πραγματικά καλούς ανθρώπους, έγραψε αυτή την κατηγορία για μένα, και χειρίζεται τα πράγματα όπως εμφάνιση κουμπιά ή καθιστώντας την οθόνη, και θα είναι πολύ πικραμένος να εφαρμόσει όλα αυτά τα λειτουργικότητα τους εαυτούς μας, και έτσι με απλά κληρονομεί τα δεδομένα μπορούμε να πούμε ό, τι κάνατε σε αυτή την κλάση Θέλω, επίσης, στο εσωτερικό της τάξης μου, και στη συνέχεια, Πάω να κάνω κάποια άλλα πράγματα, δηλαδή την υλοποίηση μιας εφαρμογής. Αυτό είναι το τι σημαίνει κληρονομιά λέξη. Θα δούμε ένα πιο συγκεκριμένο παράδειγμα. Και τελικά, το κλειδί με Αντικειμενοστρεφής Προγραμματισμός είναι ότι οδηγεί σε δεδομένα ενθυλάκωση. Σε ορισμένες από μας θέτει το πρόβλημα θα μπορούσαμε να έχουμε αυτές τις μεγάλες, παγκόσμιες μεταβλητές globals και παντού, και αυτό είναι το πώς θα θέλαμε να παρακολουθούμε την κατάσταση. Με μαθήματα μπορούμε να αρχίσουμε εγκλεισμού πληροφορίες μέσα από ένα αντικείμενο. Αν έχουμε μία οθόνη στην εφαρμογή μας, εμείς δεν πρέπει πραγματικά να έχουν όλα τα δεδομένα από άλλη οθόνη στο εσωτερικό του app μας ότι, και έτσι με εγκλεισμού πράγματα μέσα στην τάξη αυτή οδηγεί στην πραγματικότητα σε πολύ καλύτερη σχεδίαση κώδικα, και αυτό είναι δυνατό με μερικά από τα πρόσθετα χαρακτηριστικά του Objective-C. Προειδοποίηση, η σύνταξη για Objective-C είναι μπανάνες. Είναι σαν τίποτα δεν έχουμε δει στο παρελθόν, γι 'αυτό είναι λίγο μια καμπύλη μάθησης συνηθίσει να Τι στο καλό σημαίνει αυτό; Αλλά μόλις πάρετε το παρελθόν ότι η αρχική καμπύλη μάθησης είναι πραγματικά, πραγματικά ομαλή να αρχίσει να γράφει εφαρμογές. Για να δηλώσετε μια τάξη, να πω εδώ είναι η τάξη μου, υπάρχει, και ίσως εδώ είναι μερικά πράγματα που θα πάω να καθορίσει αργότερα, Πάω να πω @ interface. Πάω να πω @ interface. Πάω να δώσει τάξη μου ένα όνομα. Και τότε αργότερα κάπου αλλού Πάω να πω @ τέλος, και τα πάντα στο μεταξύ το interface @ @ και το τέλος θα είναι τάξη μου. Αυτό πρόκειται να είναι αυτό που είναι μέσα της. Αρχεία ώρα μας. Ακριβώς όπως και στην C. Αρχεία μας είπε η βασικά εδώ είναι μερικά πράγματα που θα υπάρχουν. Εγώ δεν σας λέω κατ 'ανάγκη αυτό που κάνουν ακόμα, αλλά ο compiler πρέπει να γνωρίζει ότι υπάρχουν. Αργότερα μέσα του. M-αρχεία μας, γιατί μ για Objective-C είναι όπου είμαστε πραγματικά πρόκειται να ορίσουμε τι κάνουν αυτά τα μαθήματα. Μοιάζει πολύ με τα αρχεία. Γ μας, προσφέραμε μια εφαρμογή για τις λειτουργίες. Μέσα. Μ. αρχείο μας θα πάμε να πούμε εδώ είναι ό, τι όλες οι λειτουργίες στο εσωτερικό της τάξης μου-τι κάνουν όλοι. Και τέλος, μέσα από ένα struct θα μπορούσαμε να πούμε μέσα από τις αγκύλες int n ή κόμβο * επόμενο, και σε Objective-C θα πάμε να χρησιμοποιούν τη λέξη-κλειδί @ ιδιοκτησίας, και αυτό είναι ό, τι πρόκειται να καθορίσει τις ιδιότητες, ή τα μη-λειτουργίες που είναι ένα τμήμα των τάξεων μου. Κλήση λειτουργίες σε Objective-C είναι επίσης μπανάνες. Όταν συναρτήσεις που έχουν δηλωθεί σε C είπαμε κάτι σαν int foo και ανοιχτή παρένθεση και στη συνέχεια έδωσε μια λίστα με επιχειρήματα. Αυτό είναι ό, τι δηλώνοντας μεθόδους ή λειτουργίες μοιάζει σε Objective-C. Αν θέλω να κηρύξει μια λειτουργία ή μια μέθοδο όπου λέω μέθοδος είναι πραγματικά ακριβώς μια λειτουργία που είναι ένα μέλος μιας κατηγορίας, έτσι το είδος των εναλλάξιμων, αλλά δεν είναι πραγματικά, τόσο στο εσωτερικό της μεθόδου μου, θέλω να δημιουργήσω μια νέα μέθοδο. Είναι πρόκειται να επιστρέψει τίποτα, γι 'αυτό πρόκειται να είναι του τύπου άκυρη. Αυτός είναι ο τύπος επιστροφής της λειτουργίας μου. Τώρα έχουμε παρενθέσεις εδώ γιατί-δεν ξέρω. Στη συνέχεια πρόκειται να είναι το όνομα της συνάρτησης μου, και τελικά έχουμε ένα ερωτηματικό όπως ακριβώς είχαμε στο C. Τι είναι νέο εδώ είναι αυτός ο τύπος εδώ. Αυτή η παύλα είναι πραγματικά απαραίτητο, και ό, τι αυτό λέει είναι ότι η μέθοδος αυτή εδώ πρέπει να καλείται σε ένα παράδειγμα μιας κλάσης. Αφού δήλωσε structs μας ίσως πει κάτι σαν struct κόμβος n, και ότι στην πραγματικότητα δημιουργήθηκε ή instantiated ένα από αυτά τα structs ώστε να μπορώ να πραγματικά να αρχίσει να εργάζεται με ό, τι είναι μέσα από αυτό, έτσι ώστε αυτή η παύλα σημαίνει ότι πρέπει να υπόσταση της κλάσης όπως ακριβώς instantiated ότι struct για να μπορέσουμε να καλέσετε τη μέθοδο αυτή σε αυτό. Αν θέλετε να ξεκινήσετε την προσθήκη επιχειρήματα για τις μεθόδους μου αυτό γίνεται ακόμα πιο μπανάνες. Εδώ είναι το όνομά μου μέθοδο. Στη συνέχεια, Πάω να έχουν μια άνω και κάτω τελεία, και μετά από αυτή την άνω και κάτω τελεία που λέει εδώ έρχεται κάποια επιχειρήματα. Αυτή η μέθοδος παίρνει ένα επιχείρημα. Ο τύπος της επιχειρηματολογίας της είναι int, και το όνομα του επιχειρήματος ή η μεταβλητή που Πάω να αρχίσετε να χρησιμοποιείτε το εσωτερικό της μεθόδου που ονομάζεται i. Και πάλι, αυτό είναι η μέθοδος. Παίρνει ένα επιχείρημα. Αν θέλετε να ξεκινήσετε την προσθήκη περισσότερων επιχειρήματα που παίρνει περισσότερο τις μπανάνες δεδομένου ότι έχουμε αυτό που λέει παχέος εντέρου εδώ έρχεται κατάλογος των επιχειρημάτων μου. Το πρώτο επιχείρημα είναι ένας ακέραιος. Τώρα, αυτό το δεύτερο επιχείρημα είναι ενδιαφέρουσα. Η μεταβλητή που Πάω να χρησιμοποιούν μέσα από τη λειτουργία μου στ ονομάζεται, ώστε μέσα από τη λειτουργία μου, θα μπορούσα να πω f + = 1 ή κάτι τέτοιο. Αυτό το πράγμα εδώ είναι βασικά ένα κλειδί για το όρισμα ή παράμετρος. Ακριβώς όπως είχαμε βασικά ζεύγη αξία και κάτι σαν JSON ή associative arrays Objective-C πήρε την απόφαση να πω, εντάξει, απλά έτσι ώστε να είναι πραγματικά σαφές όταν καλείτε μια μέθοδο τι είναι όλες αυτές οι παράμετροι Είμαι πραγματικά πρόκειται να τα αναφέρουμε όλα. Όταν καλείτε μια μέθοδο, θα πει πραγματικά andFloat, και στη συνέχεια θα το περάσει μέσα Ενδιαφέρον, αυτό δεν είναι το όνομα, αλλά όλες οι άλλες παράμετροι είναι, οπότε αν είχαμε ένα 3ο επιχείρημα θα μπορούσα να πω andFloat και ένα άλλο πλωτήρα και ούτω καθεξής. Όταν καλώ αυτές τις μεθόδους είναι μπανανών φυσικά, οπότε αν έχω ένα αντικείμενο, και θα ορίζεται μια μέθοδο που ονομάζεται foo, και θέλω να το ονομάσετε, αντί να πει foo άνοιγμα / κλείσιμο parens Πάω να ανοίξει ένα στήριγμα. Εδώ είναι το όνομα της μεθόδου μου. Πάω να κλείσει το βραχίονα, και αυτό είναι το αντικείμενο είμαι καλώντας τον. Θυμηθείτε, όλες αυτές οι μέθοδοι υπάρχουν μέσα στην τάξη επειδή τάξεις μπορούν να έχουν μεθόδους που ορίζονται στο εσωτερικό τους. Εδώ έχω δημιουργήσει αυθαίρετα ένα αντικείμενο κάποιας κλάσης, και αυτή είναι η σύνταξη για αυτό. Υπάρχουν 2 βήματα για τη δημιουργία ενός αντικειμένου. Το πρώτο βήμα είναι να πω ότι θέλουν να διαθέσουν χώρο. Αυτό είναι το ισοδύναμο του ενός malloc. Δεν έχουμε να πούμε πια malloc. Θα πέσει το m, έκανε alloc, και αντικατέστησε το. Με γ. M. Αφού κάτι alloc που πρέπει στη συνέχεια να γίνει η προετοιμασία. Βασικά όταν δημιουργείτε αντικείμενα που μπορεί να θέλουν να έχουν κάποια λογική που εκτελεί όταν είστε δημιουργηθεί, έτσι ώστε να μπορεί να περάσει σε ορισμένες προεπιλεγμένες τιμές ή κάτι τέτοιο, και έτσι αυτή η μέθοδος init είναι αυτό που δημιουργεί πραγματικά το αντικείμενο. Διαθέτουμε πρώτο διάστημα, όπως ακριβώς κάναμε και στην C, και στη συνέχεια θα γίνει η προετοιμασία, η οποία μπορεί ή δεν μπορεί να κάνει ένα σωρό. Στη συνέχεια, γυρίζουμε αυτό το πράγμα σε ένα αντικείμενο o. Υπάρχει ένα αστέρι εδώ, γιατί αυτό είναι τεχνικά ένα δείκτη, αλλά μην ανησυχείτε, δεν είναι δείκτες ότι μεγάλη μια διαπραγμάτευση σε Objective-C πια. Τώρα έχουμε instantiated αυτή την κατηγορία ονομάζεται NSObject, και αυτό είναι μόνο μια τυχαία θέση ότι η Apple έχει. Έχουμε αρχικοποιείται αυτό, και τώρα έχω ένα παράδειγμα αυτής της κατηγορίας σε αυτό το αντικείμενο o, έτσι αυτό σημαίνει ότι αν ορίζεται αυτές οι μέθοδοι θα μπορούσα να τους αποκαλούν έτσι. Ομοίως, αν ήθελα να καλέσει μια μέθοδο με ένα επιχείρημα, έτσι αυτή είναι η μέθοδος μπαρ, που παίρνει ένα όρισμα, και εδώ είναι η baz: qux μέθοδο, έτσι ώστε αυτό διαρκεί 2 επιχειρήματα. Αυτό καλώντας μια λειτουργία σε αυτό το αντικείμενο o. Κάντε νόημα; Η σύνταξη θα πρέπει να έχει νόημα, αλλά κατά κάποιο τρόπο να το συνηθίσεις. Εντάξει, ας μιλήσουμε για μερικά πράγματα που είναι χτισμένα σε Objective-C οποία δεν ήταν απαραιτήτως χτισμένο σε C. Στο Γ 'αυτό το είδος της έπρεπε να ασχοληθεί με χορδές, όπως αυτά τα ηλίθια συστοιχίες χαρακτήρα, και πήρε πραγματικά ενοχλητικό. Objective-C έχει όλα αυτά που χτίστηκε το για μας, και είναι χτισμένο σε χρησιμοποιώντας αυτή την κατηγορία ονομάζεται NSString. Όταν θέλετε να δημιουργήσετε μια NSString έχουμε πιο απόκρυφες σύνταξη. Αντί να λέει "CS50" λέμε @ "CS50" και αυτό είναι μόνο η σύνταξη για τη δήλωση των χορδές σε Objective-C. Αυτό είναι εξαιρετικά εύκολο να ξεχάσουμε, έτσι δεν το κάνουν. Τώρα, όταν έχω αυτό, αυτό είναι ένα string, αλλά παρατηρήσετε είναι πραγματικά ακριβώς ένα αντικείμενο. Είπα NSString, το οποίο σημαίνει ότι instantiated την κατηγορία που ονομάζεται NSString, που έγραψε κάποιος άλλος για μένα, και ήταν πολύ ωραία γι 'αυτό, και έτσι τώρα Μπορώ να αρχίσει καλώντας τις μεθόδους σε αυτό. Αν καλέσετε το μήκος μέθοδος για αυτό το αντικείμενο s πρόκειται να επιστρέψει σε μένα το μήκος του string. Αυτό είναι ακριβώς όπως strlen σε C. Αυτό θα επιστρέψει 4. Ομοίως, μια άλλη μέθοδος που μπορεί να θέλει να νοιάζονται για αυτό είναι characterAtIndex. Αυτή είναι μια μέθοδος που λέει σε αυτό το string s Θέλω να πάρετε το χαρακτήρα μηδενική, και έτσι αυτό θα επιστρέψει σε μένα το χαρακτήρα c, και υπάρχει ένα σωρό περισσότερες από αυτές τις μεθόδους που μπορείτε να το Google πραγματικά εύκολα. Τεκμηρίωση της Apple είναι μεγάλη, και θα ρίξουμε μια ματιά σε αυτό σε λίγο. Αυτοί είναι οι χορδές. Έχουμε επίσης μεταβλητό μέγεθος συστοιχίες χτισμένο in Να θυμάστε, όταν σε C δηλώσαμε μια σειρά είχαμε να πούμε ότι έχουμε 5 στοιχεία, τέλος της ιστορίας. Όταν φτάσαμε στο JavaScript και PHP θα μπορούσαμε να αρχίσουμε να κάνει τα πράγματα όπως την προσθήκη στοιχείων ή κινούμενα στοιχεία. Μπορούμε να κάνουμε το ίδιο σε Objective-C. Αντί να δημιουργήσει μια σειρά με τον κανονικό τρόπο Γ έχουμε και πάλι μια άλλη κατηγορία που ονομάζεται NSMutableArray. Υπάρχει επίσης NSArray, και αυτό πρόκειται να ενθυλακώσει κάποια βασικά συστοιχία. Αυτό λέει ότι το πρώτο πράγμα που θέλω να κάνω είναι ότι θέλουν να διαθέσουν χώρος για μια νέα σειρά, και μετά μπορώ να διαθέσουν Στη συνέχεια πρέπει να γίνει η προετοιμασία. Και πάλι, καλώντας μόνο αυτά τα 2 μεθόδους. Τώρα, αυτό σημαίνει ότι το εσωτερικό αυτού του αντικειμένου μιας Έχω μια κενή σειρά κάθεται εκεί. Αν θέλω να προσθέσω κάτι σε αυτό το φάσμα, μπορώ να καλέσω το addObject μέθοδο. Θέλω να προσθέσω ένα αντικείμενο στον πίνακα μιας και θέλω να προσθέσω τη σειρά CS50. Αν ήθελα να αφαιρέσετε αντιστρόφως ότι μπορώ να πω ότι θέλω να αφαιρέστε το αντικείμενο στην πρώτη θέση στη συστοιχία ή να προβάλλουν ένα. Κάντε νόημα; Εντάξει, έχετε το είδος της συνηθίσουν σε αυτό το τετράγωνο πράγμα βραχίονα. Με την ευκαιρία, μέσα από πολλές βιβλιοθήκες της Apple θα δείτε αυτό το NS. Το NS σημαίνει πραγματικά για το επόμενο βήμα, που ήταν μία από τις εταιρείες Steve Jobs πρώτη, και αυτό είναι πραγματικά όπου άρχισε να γράφει ένα μεγάλο μέρος της κώδικα όπως το είδος της βάσης για Mac OS X και όλα τα άλλα πράγματα, και έτσι αυτή NS είναι το είδος του αυτό το ωραίο κληρονομιά φωνάζει σε μια από τις πρώτες εταιρείες πίσω όταν η Apple για πρώτη φορά από την έναρξη. Είναι παντού. Ας ρίξουμε μια ματιά σε μια πιο ολιστική παράδειγμα Objective-C. Εδώ είμαι μέσα του Xcode. Για να φτάσετε εδώ, εγώ κατέβασα το πρώτο Xcode από το App Store, άνοιξε και, στη συνέχεια πήγα μέχρι εδώ στο αρχείο, εδώ σε νέα, και στη συνέχεια του έργου. Αφού κάνω ότι έχω όλες αυτές τις επιλογές για το τι θέλω να δημιουργήσω, και έτσι θα ρίξουμε μια ματιά σε αυτές τις επιλογές αργότερα, αλλά ακριβώς για αυτό το παράδειγμα, επειδή δεν είμαστε στην πραγματικότητα πρόκειται να έχει εφαρμογή ακόμα, Ήρθα εδώ κάτω, και είπα Εργαλείο γραμμής εντολών, και αυτό είναι μια εφαρμογή που θα μπορούσε να τρέξει στη γραμμή εντολών ακριβώς όπως έχουμε ήδη τρέχει από την C. Αυτό είναι το πώς δημιουργήθηκε αυτό το έργο, και έτσι τώρα είμαι εδώ, οπότε ας πρώτη ματιά σε αυτό το αρχείο, και αυτό θα πρέπει να εξετάσουμε πολύ εξοικειωμένοι. Έχω ένα όνομα int. Υπάρχει argc φίλος μου, άλλα φίλε μου argv. Και έτσι μπορούμε να δούμε ότι αυτό είναι το σημείο εισόδου για την πρώτη αίτησή μου Objective-C. Εδώ μπορούμε να αγνοήσουμε αυτό για τώρα. Αυτό είναι βασικά μερικά πράγματα διαχείριση μνήμης που θα σας δεν είναι πραγματικά ποτέ να ανησυχούν. Ας ρίξουμε μια ματιά σε αυτό το πρώτο μπλοκ εδώ. Η πρώτη γραμμή, αν πω Φοιτητής alice * = [[alloc Φοιτητών] init] Τι είναι αυτό κάνει; Η πρώτη φοιτητής εδώ, αυτό είναι πιθανώς μια τάξη. Αυτό δεν είναι μια κατηγορία που η Apple έγραψε, αλλά είναι μια κατηγορία που έγραψα. Το πρώτο πράγμα που θέλω να κάνω είναι ότι θέλουν να διαθέσουν χώρο για ένα νέο φοιτητή, και στη συνέχεια θέλω να προετοιμαστεί, έτσι αυτό μου δίνει πίσω αυτό το νέο αντικείμενο φοιτητής, και είμαι αποθήκευση αυτό σε μια μεταβλητή που ονομάζεται Alice. Πού κατηγορία ότι προέρχονται από; Λοιπόν, εδώ στην αριστερή πλευρά όλα αυτά είναι διαφορετικά από τα αρχεία μέσα από το έργο μου. Μπορούμε να δούμε εδώ έχω ένα Student.h και Student.m. Το αρχείο. Ώρα, να θυμάστε, όπου είναι Δηλώνω όλα τα πράγματα που θα υπάρχουν μέσα στην τάξη. Ας ρίξουμε μια ματιά σε αυτό. Εντάξει, εδώ έχουμε αυτό το @ interface, και αυτό λέει ότι εδώ έρχεται οι δηλώσεις του κάθε τι που θα υπάρχουν μέσα στην τάξη μου. Στη συνέχεια, έχω μια άνω και κάτω τελεία. Στη συνέχεια, έχω αυτό το πράγμα NSObject. Αυτό σημαίνει ότι η άνω και κάτω τελεία λίγο κληρονομιά συζητούσαμε λίγο νωρίτερα. Αυτό τα λέει όλα μια NSObject μπορεί να κάνει όπου NSObject είναι η τάξη αυτή που γράφτηκε από κάποιον άλλο, ό, τι αυτό μπορεί να κάνει NSObject Θέλω να είμαι σε θέση να το κάνουμε αυτό. Με λέγοντας: NSObject αυτό σημαίνει ότι εγώ βασικά κληρονόμησε το σύνολο της λειτουργικότητας μιας άλλης τάξης. Αυτό πραγματικά μου έδωσε ένα σωρό διαφορετικές μεθόδους και ιδιότητες που μπορώ να χρησιμοποιήσω. Εδώ κάτω, είμαι δημιουργία 2 ακίνητα. That σημαίνει μαθητής μου, αν αυτό ήταν ένα struct, αυτά θα είναι τα 2 πράγματα μέσα από struct μου, έτσι ώστε κάθε μαθητής έχει ένα όνομα αυτό είναι ένα string, και ένας φοιτητής έχει επίσης ένα βαθμό, το οποίο είναι ένα int. Τέλος, εδώ κάτω Πάω να δημιουργήσει μια μέθοδο για το μαθητή μου. Κάλεσα τη μέθοδο μου, initWithName, και παίρνει ένα επιχείρημα, και ότι το επιχείρημα αυτό είναι ένα string, και κάλεσα το όνομα. Τώρα, ας ρίξουμε μια ματιά στο πώς θα υλοποιηθεί στην πραγματικότητα αυτή την κατηγορία. Εδώ, τώρα είμαι στο εσωτερικό του. File m μου, m για την εφαρμογή, υποθέτω. Έχω την εφαρμογή μου, τέλος μου, και εδώ είναι όπου είμαι πραγματικά τον καθορισμό initWithName τι κάνει. Έχω initWithName, το όνομα της παραμέτρου μου, και στη συνέχεια, αυτό το είναι όπου είμαι πραγματικά δημιουργώντας ένα μαθητή, και έτσι αυτό είναι λίγο αινιγματικό, αλλά αυτό είναι το είδος του boilerplate που θέλετε να συμπεριλάβετε σε κατασκευαστές σας. Αυτή η λειτουργία αρχικοποίησης εδώ, initWithName, είναι ένας τύπος του κατασκευαστή. Είσαι κατασκευή ουσιαστικά ένα νέο αντικείμενο φοιτητής και την αποστολή ίσως κάποια στοιχεία στο εσωτερικό του. Το πρώτο πράγμα που θέλω να κάνω είναι που θέλω να καλέσω init σε αυτό το σούπερ πράγμα. Να θυμάστε ότι όταν είπα πάλι εδώ στο αρχείο. H που πάντα ένα NSObject έχει ένας μαθητής έχει επίσης. Αυτό σημαίνει ότι όταν μπορώ να δημιουργήσω ένα μαθητή αυτό που επίσης χρειάζεται να κάνετε είναι βεβαιωθείτε ότι η NSObject ότι είμαι κληρονομεί όλα τα δεδομένα από Επίσης αρχικοποιηθεί σωστά. Αυτό που πρέπει να πω είναι αυτό το σούπερ είναι πραγματικά πρόκειται να αναφερθώ στην τάξη μητρικής ότι είμαι κληρονομεί από, έτσι θέλω να είμαι σίγουρη ότι η προετοιμασία ό, τι είμαι ανάλογα με πριν αρχίσω να προσπαθώ να το χρησιμοποιήσετε. Στη συνέχεια, αν προετοιμαστεί σωστά ότι αυτό είναι ακριβώς σαν να λέμε αν malloc δεν επιστρέψει null τότε μπορώ να αρχίσουν να θέτουν ορισμένες ιδιότητες. Σε JavaScript και PHP είχαμε αυτό το κλειδί που ονομάζεται αυτό, και αυτό που αναφέρεται στο τρέχον στιγμιότυπο μιας κλάσης. Στις περιφέρειες του στόχου-C που ονομάζουμε αυτή την αυτο. Όταν λέω self.name, αυτό σημαίνει ότι το αντικείμενο Απλά δημιουργείται όταν είπα alloc φοιτητής init, που πρόκειται να μου δώσει πίσω ένα αντικείμενο. Αυτό σημαίνει ότι μπορώ θέλετε να ορίσετε το όνομα του αντικειμένου σε ό, τι εγώ μόλις περάσει μέσα Ακριβώς όπως και στην C, έχουμε πρόσβαση των μελών με αυτό τελεία, έτσι self.name ανέφερε ότι το όνομα του αντικειμένου των φοιτητών τώρα θα είναι ό, τι ακριβώς περάσει μέσα Και έτσι τελικά, μπορώ να το επιστρέψει, ώστε να πάρω κάτι πίσω στην πραγματικότητα. Ερωτήσεις; Εντάξει, έτσι αυτή η αυτο = σούπερ init, αν δεν καταλαβαίνετε εντελώς τα πράγματα κληρονομιά μην ανησυχείτε. Απλά ξέρω ότι αν ποτέ θέλετε να φτιάξετε το δικό σας init μέθοδο μόνο το κάνουμε αυτό, και θα είναι καλό να πάει. Ναι. >> [Φοιτητικό] Τι σημαίνει αν αυτο; Αυτό σημαίνει ότι όταν malloc κάτι που πάντα ελέγχεται αν ήταν ίσο με το μηδέν, και αν ήταν μηδενική, τότε βγήκε. Αυτό είναι το ίδιο πράγμα, γιατί αν αυτό επιστρέφει null, τότε πρόκειται πιθανώς να seg σφάλμα αν αρχίσουμε να προσπαθούμε να το χειραγωγήσουν. Αυτός είναι ο φοιτητής τάξη μας. Αυτό σημαίνει ότι μπορούμε να προετοιμάσει τους μαθητές μας σε έναν από τους δύο τρόπους. Αν πω alloc φοιτητής init δεν είμαι χρησιμοποιώντας τη μέθοδο που μόλις έγραψε, και αντ 'αυτού μπορώ να πω απλά alice.name, και τώρα είμαι πρόκειται να θέσει το όνομα ιδιοκτησίας. Ομοίως, αν θέλω να χρησιμοποιήσω αυτή τη μέθοδο initWithName Μπορώ να πω απλά alloc, και στη συνέχεια, αντί να πει init Πάω να καλέσετε τη μέθοδο που μόλις δημιουργήσατε, και Πάω να περάσει στο Bob. Σε αυτό το σημείο, αυτό το αντικείμενο Bob έχει ένα όνομα ίσο με το βαρίδι. Εντάξει, εδώ κάτω είμαι με τη χρήση αυτή NSMutableArray ότι είδαμε νωρίτερα. Είμαι κατανομή space.Then Είμαι αρχικοποίηση μια νέα σειρά. Πάω να προσθέσω 2 πράγματα σε αυτό. Αυτή η σειρά έχει τώρα αντικείμενα φοιτητής. Παρατηρήστε ότι πουθενά δεν έχω να πω αυτό είναι μια σειρά από φοιτητές. Είπα ότι είναι μια σειρά, περίοδος. Τότε μπορώ να βάλω ό, τι στο εσωτερικό του αυτό που θέλω. Εδώ έχω 2 αντικείμενα. Τέλος, έχω ένα άλλο αντικείμενο, εδώ το TF. Πάνω εδώ σε TF.h βασικά το ίδιο πράγμα. Είμαι κληρονομεί από NSObject, και από τον τρόπο, όταν δημιουργείτε τάξεις αυτό όλα γίνονται για σένα, αυτό το είδος της διασύνδεσης στερεότυπο. Έχει μια ιδιότητα των φοιτητών. Έχω ένα ζευγάρι εδώ μεθόδους που δεν κάνουν πραγματικά ένα πάρα πολύ, και έτσι αυτό σημαίνει ότι αφού μπορώ να δημιουργήσω αυτό το αντικείμενο TF Μπορώ να καλέσετε αυτό το βαθμό σε αυτή τη μέθοδο σαν αυτό. Οποιεσδήποτε ερωτήσεις σχετικά με τη σύνταξη Objective-C πριν αρχίσει να κινείται σε λίγο περισσότερο ενδιαφέροντα πράγματα ανάπτυξη εφαρμογών; Εντάξει, οπότε ας κάνουν πραγματικά ένα iPhone app. Οι τάξεις πυρήνα που θα χρησιμοποιείτε στο εσωτερικό του iPhone app σας ονομάζεται ελεγκτές άποψη, και έναν ελεγκτή άποψη αποτελεί ουσιαστικά μια ενιαία οθόνη μέσα από την εφαρμογή σας, οπότε αν είμαι στο app μουσική, για παράδειγμα, έναν ελεγκτή άποψη θα μπορούσε να αποτελέσει την άποψη στην οποία μπορώ να δω όλα τα τραγούδια στο iPhone μου. Μια άλλη άποψη ελεγκτής θα μπορούσε να είναι όταν κάνω κλικ σε ένα τραγούδι και να αρχίσετε να παίζετε το ή όπως είμαι γεώτρηση κάτω στο καλλιτεχνών. Κάθε μία από αυτές τις διαφορετικές οθόνες θα μπορούσε να παρασταθεί ως μια διαφορετική άποψη ελεγκτή, και έναν ελεγκτή θέα είναι πραγματικά ακριβώς μια κατηγορία που λέει πως αυτή η οθόνη λειτουργεί. Τα πράγματα μέσα από έναν ελεγκτή άποψη, θα πάμε να έχουν ιδιότητες, έτσι τα πράγματα, όπως ένα κουμπί πρόκειται να είναι μια ιδιότητα του ελεγκτή την άποψή μας. Είμαστε, επίσης, πρόκειται να έχουμε τις μεθόδους, και αυτά είναι βασικά χειρισμού συμβάντων. Αυτή η μέθοδος λέει ότι όταν πατήσετε το κουμπί Θέλω να κάνω κάτι, και, τέλος, και πάλι, θα πάμε να χρησιμοποιούν αυτή την αυτο-κλειδί για να έχουν πρόσβαση στο τρέχον στιγμιότυπο. Για να οικοδομήσουμε διασυνδέσεις στο iOS είναι πραγματικά πολύ, πολύ εύκολο. Έχουν αυτό το ωραίο drag and drop interface που ονομάζεται Interface Builder, και οι 2 βασικές έννοιες σύρμα ότι μέχρι σας Objective-C έως Interface Builder είναι IBOutlet και IBAction. Μια IBOutlet λέει απλά ότι αν δηλώσει ένα ακίνητο που είναι ένα κουμπί, και θέλετε να το συνδέσετε με κάτι σε πραγματικό περιβάλλον εργασίας σας, θα πάμε να πούμε ότι είναι μια διέξοδος. Ομοίως, αν θέλετε να αντιπροσωπεύουν ένα πρόγραμμα χειρισμού συμβάντων τότε θα πάμε να πούμε ότι είναι μια ενέργεια. Για πραγματικά σύρμα μέχρι αυτή την γραφική αναπαράσταση και ο κωδικός σας είναι πραγματικά, πραγματικά απλή. Αν θέλετε να επισυνάψετε μια IBOutlet, το μόνο που έχετε να κάνετε είναι να ελέγχετε το κλικ, και θα δούμε ένα παράδειγμα αυτής της πραγματικά γρήγορα. Μπορείτε να ελέγξετε κάντε κλικ εκεί που λέει View Controller. Θα πάμε για να σύρετε στο περιβάλλον, ή αντιστρόφως, αν θέλετε να συνδέσετε ένα πρόγραμμα χειρισμού συμβάντων που πρόκειται να σύρετε από τη διεπαφή στην άλλη κατεύθυνση. Ας ρίξουμε μια ματιά σε ένα πολύ απλό παράδειγμα iOS. Ας δημιουργήσουμε ένα νέο έργο. Πάω να έρθει εδώ για να Εφαρμογής, και Πάω να κάνετε κλικ Ενιαίας Αίτησης View. Πάω να κάντε κλικ στο επόμενο. Θα δώσω το έργο μου ένα όνομα. Θα καλέσω το Hello. Είναι ενδιαφέρον, η Apple θεωρεί είστε δημιουργία ενός προϊόντος ώστε να μπορείτε να το πουλήσει και να μπορούν να κάνουν τα χρήματα. Κάτω εδώ Πάω να πω ότι αυτό είναι ένα iPhone app. Μπορείτε να δημιουργήσετε ένα iPad app, ή εάν θέλετε να δημιουργήσετε μια από αυτές τις εφαρμογές που υποστηρίζει και τις δύο συσκευές που μπορείτε να κάνετε ότι πάρα πολύ. Αυτά είναι ό, τι θέλετε checkmarks σας να μοιάζουν. Θέλετε να χρησιμοποιήσετε storyboards, το οποίο θα δούμε αργότερα, και σίγουρα θέλετε να χρησιμοποιήσετε αυτόματη μέτρηση αναφοράς, το οποίο είναι ένα καλό χαρακτηριστικό γνώρισμα που σας εμποδίζει από το να έχουν να λένε malloc και δωρεάν. Εκτός αν θέλετε να καλέσετε malloc και δωρεάν, θα άφηνα αυτό ελέγχεται. Θα κάντε κλικ στο επόμενο, και τελικά, αυτό πρόκειται να με ρωτήσεις πού θέλετε να το αποθηκεύσετε. Θα χτυπήσει τη δημιουργία, και εδώ πάμε. Δημιούργησα ένα νέο έργο. Πάνω εδώ στα αριστερά είναι όλα τα αρχεία που βρίσκονται μέσα του έργου μου, και παρατηρήστε ότι πήρα ένα σωρό, και εγώ ακόμα δεν έκανα τίποτα. IOS είναι μεγάλη. Για παράδειγμα, εδώ αυτό ViewController.h, αυτό πρόκειται να εκπροσωπήσει πρώτο ελεγκτή την άποψή μου, έτσι ώστε η πρώτη οθόνη στο εσωτερικό του app μου. Τώρα ξέρουμε τι είναι αυτό που λέει. Εμείς λέμε Παίρνω αυτό το ViewController τάξη, και ένα ViewController κάνει ό, τι κάνει ένας UIViewController, και αυτό, πάλι, είναι κάποια κατηγορία ότι η Apple έγραψε ότι κάνει πολλά πράγματα βολικό για μας όπως εμφανίζονται στην οθόνη. Εδώ είναι που μπορεί πραγματικά να αρχίσει να καθορίζει τι ελεγκτή την άποψή μου κάνει, και αποδεικνύεται ότι εγώ πραγματικά δεν χρειάζεται τίποτα από όλα αυτά. Αυτό είναι ο κωδικός στερεότυπο ότι η Apple μου δίνει δωρεάν. Έκανα ανάγκη ότι η πρώτη γραμμή, ή δεν έχω μια τάξη, έτσι ώστε να μπορούμε να απαλλαγούμε από αυτό και να απαλλαγούμε από αυτό. Εντάξει, έτσι αυτό είναι κενή οθόνη μου. Τώρα ας κάντε κλικ σε αυτό το MainStoryboard.storyboard, και αυτό είναι που αρχίζει να παίρνει ενδιαφέρον. Αυτό αποτελεί την πρώτη οθόνη στην εφαρμογή μου. Αν θέλετε να προσθέσετε ένα κουμπί, HTML σε είχα για να δημιουργήσετε μια ετικέτα κουμπί. Το Android θα πρέπει να δημιουργήσετε μια ετικέτα κουμπιού, αλλά σε iOS αν μόλις έρθει εδώ κάτω στην κάτω δεξιά γωνία και αν κάνω κλικ σε αυτό 3η εδώ όπου λέει αντικείμενα, και μπορώ να μετακινηθείτε προς τα κάτω, ή μπορώ να ξεκινήσετε την αναζήτηση για το κουμπί. Και κοίτα, ένα κουμπί, οπότε αν πραγματικά drag and drop αυτό το δικαίωμα εκεί, Έχω προσθέσει μόλις ένα κουμπί σε αυτή την οθόνη για app μου. Αν θέλετε να αλλάξετε το κείμενο, μπορώ να διπλό κλικ, πω κάτι δελεαστικό σαν "Me Πατήστε". Εντάξει, τώρα αν μπορώ να εκτελέσω αυτό το app, έτσι ώστε να το υπολογίσουν, έτσι για να το τρέξει κάνω κλικ στο κουμπί play στην πάνω αριστερή, και δεν υπάρχει app μου. Δεν έκανα τίποτα, και πήρα ένα γλυκό αναζητούν iPhone app. Αν θέλω να το σταματήσει, μπορείτε να κάνετε κλικ στο κουμπί stop επειδή είναι πιο διασκεδαστικό. Ας πούμε ότι θέλω πραγματικά να συμβεί κάτι όταν πατάω το κουμπί. Για να το κάνετε αυτό που πρέπει να κάνω είναι ότι χρειάζεστε για να δημιουργήσετε ένα νέο πρόγραμμα χειρισμού συμβάντων ή μια ενέργεια. Αυτό σημαίνει ότι θα πρέπει να δημιουργήσει κάποια μέθοδο που θέλω να ονομάζεται όταν πατάω το κουμπί, οπότε ας δημιουργήσουμε μια νέα μέθοδο. Είμαι μέσα από ViewController.h. Θέλω να πω ότι υπάρχει μια μέθοδος. Χρειάζομαι μια παύλα πρώτα επειδή Πάω να ζητούν αυτό στον ελεγκτή άποψη. Πρέπει να δώσει σε αυτό το είδος. Ο τύπος του αυτό πρόκειται να είναι αυτό το πράγμα IBAction που είδαμε νωρίτερα. Αυτό είναι ένα πρόγραμμα χειρισμού συμβάντων, γι 'αυτό πρόκειται να επιστρέψει ένα IBAction, και αυτό είναι μια υπόδειξη για να Xcode να πω ότι αυτό είναι κάτι που θέλω να συνδέσετε κάτι. Μπορώ να σας δώσω ένα όνομα, όπως buttonPressed, ερωτηματικό. Τώρα έχω δηλώσει μια νέα μέθοδο μέσα στην τάξη μου. Έχω πει η μέθοδος αυτή πρέπει να υπάρχει. Τώρα, ας έρθει σε ViewController.m, και ας πούμε ό, τι αυτή η μέθοδος μπορεί να κάνει. Αν αρχίσετε να πληκτρολογείτε, για παράδειγμα, (κενό) buttonPressed Ανακοίνωση Xcode είναι πραγματικά ωραίο και Συμπληρώνει αυτόματα για μένα. Αυτό είναι πραγματικά υπέροχο. Σημειώστε εδώ ότι στο εσωτερικό του αρχείου. Μ. μπορώ να πω επίσης άκυρη, και αυτό οφείλεται στο γεγονός ότι IBAction δεν είναι στην πραγματικότητα ένας τύπος. Είναι πραγματικά hashtag ορίζεται κάπου να είναι ένα κενό, και πάλι, αυτό είναι μόνο ένα δείγμα για Xcode που λέει Θέλω αυτό να είναι ένα πρόγραμμα χειρισμού συμβάντων, και θα δούμε γιατί μέσα σε μόλις ένα δευτερόλεπτο. Όταν αυτό το κουμπί είναι πατημένο Πάω να κάνω κάτι ενοχλητικό όπως εμφανίζεται ένα αναδυόμενο παράθυρο. Για να γίνει αυτό μπορώ να δημιουργήσω ένα νέο παράδειγμα της κατηγορίας αυτής που ονομάζεται UIAlertView, και αυτό είναι μια κατηγορία που η Apple έγραψε ότι πρόκειται να εμφανίσει ενοχλητικά αναδυόμενα παράθυρα. Θα καλέσετε αυτό το αναδυόμενο παράθυρο προειδοποίησης, και έχω 2 βήματα, να θυμάστε, για τη δημιουργία αυτού του αντικειμένου. Το πρώτο πράγμα που πρέπει να κάνετε είναι να εκχωρήσετε χώρο. Θέλω μια UIAlertView. Θέλω να εκχωρήσετε χώρο. Αυτός είναι ο πρώτος τρόπος μου. Επόμενη μέθοδο μου που θέλω είναι να γίνει η προετοιμασία, και έτσι έχω αυτό το μεγάλο, μακρύ μέθοδο που ονομάζεται initWithTitle. Αυτός είναι βασικά πρόκειται να ελέγξει τι λέει αυτό το αναδυόμενο παράθυρο. Ο τίτλος του παραθύρου μου μπορεί να είναι γεια. Το μήνυμα αυτού του παραθύρου μπορεί να είναι "Αυτό είναι το iOS." Εκπρόσωπος πράγμα, δεν ξέρω τι είναι αυτό. Ας πούμε ότι δεν είναι τίποτα. Τώρα το κουμπί που πρόκειται να εμφανιστούν μπορεί να πει κάτι σαν «Είναι σίγουρα», και δεν θέλω πραγματικά κάποια άλλα κουμπιά, οπότε ας το διαγράψετε και να κλείσει το βραχίονα. Εντάξει, έχω δημιουργήσει μια επιπλέον ένα. Εκεί πάμε. Αυτό είναι το πώς μπορώ να δημιουργήσω ένα νέο αναδυόμενο παράθυρο. Αν θέλετε να δείτε πραγματικά το αναδυόμενο παράθυρο που θέλετε να καλέσετε τη μέθοδο show. Για να γίνει αυτό μπορώ να πω σε εγρήγορση και επίδειξη, και πάλι, autocomplete ήταν σούπερ ωραία. Αν ξέχασα τι ήταν αυτό, αν εγώ μόλις πληκτρολογήσατε στο s, Μπορώ να μετακινηθείτε εδώ για να καταλάβω τι ήταν, φιλτράρει και όμορφα. Τώρα δημιούργησε αυτό το νέο αναδυόμενο παράθυρο. Θα επανέλθουμε σε αυτό αργότερα εκπρόσωπος σημαίνει, και τώρα θέλω να πω ότι θέλω αυτή η μέθοδος πρέπει να απολυθούν όταν πατάω το κουμπί, έτσι είμαι πρόκειται να επανέλθει στο storyboard μου, και θέλω να αποδίδουν τώρα αυτό IBAction. Το πρώτο πράγμα που θέλετε να κάνετε είναι να κάνετε κλικ στο κουμπί. Όταν πατάω το κουμπί αυτό θέλω κάτι να συμβεί. Είμαι δεν πρόκειται να κρατήσετε πατημένο τον έλεγχο. Πάω να κάνετε κλικ και να σύρετε από το κουμπί σε πάνω από εδώ εκεί που λέει View Controller. Μπορούμε να δούμε ότι ανάβει όμορφα επάνω. Αν αφήσει να πάει με το ποντίκι μου έχω τώρα αυτό το αναδυόμενο εδώ όπου έχω κάποιες επιλογές. Ένα από αυτά είναι τα γεγονότα που μπορούν να εγγραφούν. Αυτά είναι όλα από αυτές τις μεθόδους που δηλώνονται στο αρχείο μου, η ως IBActions. Αυτό είναι το πώς Xcode ξέρει τι θα πρέπει να εμφανίζονται σε αυτή τη μικρή λίστα, έτσι αυτό είναι μόνο ένα δείγμα. Αν κάνω κλικ στο κουμπί πατημένο, έχω εγγραφεί τώρα το event-handler. Σε JavaScript θα έπρεπε να πω ότι έχω κάποιο κώδικα που κατέγραψε το πρόγραμμα χειρισμού συμβάντων. Στην Objective-C ήταν πραγματικά τόσο εύκολο. Αν τρέξω αυτό πάλι τώρα όταν πατάω το κουμπί χειρισμού συμβάντων μου πρόκειται να φωτιά, και είμαι πρόκειται να πάρει αυτό το αναδυόμενο παράθυρο. Σούπερ, σούπερ απλό εκεί. Αν ποτέ θέλετε να δείτε όλα τα συμβάντα που τυχαίνει να είναι εγγεγραμμένος σε ένα στοιχείο, αν κάνω κλικ σε αυτό το κουμπί και έρχομαι εδώ στη δεξιά πλευρά πρώτα να δείτε εδώ μπορώ να κάνω τα πράγματα όπως τον τύπο του κουμπιού, οπότε αν θέλετε ένα από αυτά τα εγώ ή το κουμπί Προσθήκη επαφής ή οτιδήποτε άλλο. Αν θέλετε να δείτε όλα τα συμβάντα που είναι σε αυτό το κουμπί αν έρθω σε όλη τη διαδρομή εδώ στη δεξιά πλευρά μπορούμε να δούμε εδώ τις εκδηλώσεις που έχω όλα αυτά τα διαφορετικά γεγονότα. Μπορώ να πατήσετε το κουμπί, όταν αφήσετε το κουμπί, όταν κάνω διπλό βρύση ή οτιδήποτε άλλο, και το ένα που είναι εγγεγραμμένοι μόνο αυτό το γεγονός που ονομάζεται Touch Up Μέσα, και αυτό λέει ότι μόλις το δάχτυλό μου ξεκολλήσει το κουμπί περίπτωση που πρόκειται για φωτιά, και αυτό είναι ακριβώς ό, τι ακριβώς συνέβη. Αυτό είναι το είδος των πατημένο το κουμπί προεπιλεγμένο συμβάν. Οποιεσδήποτε ερωτήσεις μέχρι τώρα; Εντάξει, αυτό είναι το πώς μπορούμε να αρχίσουμε να συνδέσετε τα πράγματα στον κώδικά μας σε πράγματα μέσα της διεπαφής μας. Θυμηθείτε το πρώτο πράγμα που έπρεπε να κάνουμε ήταν να βρούμε τον κωδικό, και τότε ενσύρματη αποτελούν τη διασύνδεση με τον κώδικα, και δεν υπάρχει πρώτο app μας. Εντάξει, αυτό ήταν πραγματικά δροσερό, και δημιουργήσαμε αυτό το κουμπί. Αυτό που δεν κάνουμε αν θέλουμε να έχουμε για να δημιουργήσετε μια δέσμη των ιδιοτήτων που αντιπροσωπεύουν αυτά τα κουμπιά; Για παράδειγμα, στην Tic Tac Toe έχω 9 Κουμπιά, και θα ήθελα να είναι σούπερ, σούπερ ενοχλητικό να πρέπει να drag and drop 9 φορές ή αν έπρεπε να κάνω Tic Tac Toe με 81 αντί 9 και έπρεπε να drag and drop 81 φορές, και αυτό είναι κουτσός. Τι μπορούμε να κάνουμε αντ 'αυτού είναι πολύ σαν ένα HTML όταν είχαμε τα πράγματα όπως τα αναγνωριστικά και τα ονόματα και μπορούμε να ψάξουμε για τα πράγματα από την ταυτότητα τους, υπάρχει μια παρόμοια έννοια στο iOS που ονομάζονται ετικέτες. Μια ετικέτα είναι απλά μια μοναδική αριθμητική αναγνωριστικό για ένα στοιχείο. Αν λέω αυτό έχει μια ετικέτα από το 0, για παράδειγμα, αν μπορώ να δημιουργήσω ένα κουμπί και να του δώσετε μια ετικέτα από το 0, και θα δούμε πώς να το κάνουμε αυτό μέσα σε μόλις ένα δευτερόλεπτο, αν θέλω να πάρω αυτό το κουμπί μπορώ να πω ότι απλά θέλετε να καλέσετε viewWithTag η μέθοδος για το αντικείμενο πάνω από εδώ, η self.view, η οποία αντιπροσωπεύει την τρέχουσα οθόνη, για παράδειγμα. Αν καλέσετε τη μέθοδο viewWithTag, Πάω να τραβήξει πίσω το κουμπί με την ετικέτα 0. Ας ρίξουμε μια ματιά σε αυτό το κτίριο με Tic Tac Toe. Πρώτον, αυτή είναι storyboard μου. Έχω δημιουργήσει αυτά τα 10 πλήκτρα UI. Παρατηρήστε ότι είναι όλα το ίδιο μέγεθος. Αν κάντε κλικ σε ένα από αυτά και έρχομαι πίσω πάνω σε αυτό εδώ δεξιά πλευρά θα δείτε έχω προσαρμοστεί η γραμματοσειρά δικαίωμα εδώ, γι 'αυτό έκανε τη γραμματοσειρά λίγο μεγαλύτερο, αλλά ό, τι έκανα και ήταν έθεσα αυτήν την ετικέτα. Είπα ότι αυτό έχει μια ετικέτα της 1, και αυτό είναι το επάνω αριστερά. Τώρα, αν κάνω κλικ άλλο κουμπί, όπως αυτό το δεύτερο εδώ, Τώρα θα δείτε ότι η ετικέτα μου είναι 2. Κάθε ένα από αυτά τα κουμπιά έχει μόνο μια μοναδική ετικέτα, και έτσι αυτό αργότερα πώς θα πάω για να ξεκινήσει την αλληλεπίδραση με app μου. Αυτό είναι όλα μέσα από έναν ελεγκτή άποψη, αλλά εδώ είναι ό, τι έχουμε. Έχουμε 3 ακίνητα εδώ. Η πρώτη και η τελευταία πρόκειται να εκπροσωπήσει την κατάσταση του σκάφους μου. Βασικά αυτή η πρώτη είναι μια σειρά που αντιπροσωπεύουν όπου η Xs και Os είναι. Η άλλη μας λέει εδώ είναι η σειρά του. Θα παρατηρήσετε ότι έχω επίσης αυτά τα πράγματα εδώ. Πριν, όταν δηλώσαμε ιδιότητες τους δώσαμε ένα όνομα και έναν τύπο. Μπορούμε, επίσης, να τους δώσει κάποιες πρόσθετες πληροφορίες εδώ. Η πρώτη λέει nonatomic, και ό, τι αυτό λέει είναι ουσιαστικά μόνο ένα πράγμα θα μπορέσει ποτέ να προσπαθείτε να μεταβείτε σε αυτή την μεταβλητή σε μια στιγμή. Θα μπορούσατε να κάνετε πιο σύνθετες εφαρμογές που είναι multi-threaded, και έτσι πίσω στο Scratch είχαμε διαφορετικά θέματα, και διαφορετικά ξωτικά θα μπορούσε να κάνει διαφορετικά πράγματα την ίδια στιγμή. Αν αυτό δεν είναι η περίπτωση, που δεν είναι κάτι που θα πρέπει να εξετάσουμε, αν πούμε nonatomic αυτό είναι πραγματικά πρόκειται να κάνει τα πράγματα λίγο πιο γρήγορα. Έχουμε, επίσης, αυτό το πράγμα που ονομάζεται ανάθεση, ισχυρή, ή αδύναμη. Αυτή η εκχώρηση λέει ακριβώς ότι αυτό είναι ένα πρότυπο. Αυτό δεν είναι ένα αντικείμενο ή ένα δείκτη επειδή αυτό είναι μόνο ένα bool, bool έτσι είναι χτισμένο σε Objective-C. Αυτό δεν λέει να προσπαθήσουμε να κάνουμε κάτι φανταχτερό με δείκτες εδώ. Είναι μια παλιά τακτική scaler. Ισχυρά και αδύνατα, αυτό το αδύναμο λέει ότι στην πραγματικότητα Θέλω αυτό να δείχνει κάτι στον ελεγκτή άποψη. Είμαι δεν πρόκειται να διαθέσει στην πραγματικότητα ή init τον εαυτό μου αυτό. Ο οικοδόμος διεπαφή, όταν τρέχω την εφαρμογή, πρόκειται να χειριστεί όλα αυτά αρχικοποίηση. Αν πω αδύναμη, που λέει κάποιος άλλος πρόκειται να δημιουργήσει αυτό. Αν πω ισχυρή, αυτό λέει ότι είμαι πρόκειται να είναι η μία Αυτό είναι αντικείμενο τη δημιουργία αυτού του σκάφους, και έτσι εδώ έχω μερικές ακόμα μεθόδους εδώ, για παράδειγμα, μια ενέργεια για όταν ο νέος παιχνίδι κουμπί είναι πατημένο, η αγωγή, όταν οποιοδήποτε από τα άλλα κουμπιά πιέζονται, και λοιπά et. Εμείς δεν θα μπει σε πάρα πολύ από τη λογική της Tic Tac Toe, αν και είναι πολύ συναρπαστικό, αλλά ας ρίξουμε μια ματιά στο μερικά από τα πράγματα που μπορούμε να κάνουμε μέσα από το iOS. Αυτή η νέα μέθοδος παιχνίδι πρόκειται να απολυθούν κάθε φορά που πατάω το κουμπί νέο παιχνίδι. Για να συνδέσετε μέχρι και ότι εγώ απλά να έρθει να μου storyboard. Χτύπησα στο νέο παιχνίδι. Αν έχω έρθει εδώ για να το δικαίωμα μπορώ να δω ότι Αγγίξτε Up Μέσα είναι ενσύρματο για την newGame μέθοδο. Γι 'αυτό πρόκειται να πάρει φωτιά. Η μέθοδος newGame πρόκειται να κάνει κάποια set up. Είναι πρόκειται να πω Θέλω να καθαρίσετε την κατάσταση του σκάφους. Αυτή είναι μια ωραία μέθοδος για ευμετάβλητος συστοιχίες. Αυτό δεν πρόκειται να πει ότι είναι τώρα η σειρά Χ, και τώρα είμαι πρόκειται να επωφεληθούν από αυτή την viewWithTag πράγμα. Ξέρω ότι τα κουμπιά μου έχουν τις ετικέτες 1-9, και αυτό είναι κάτι που διάλεξε αυθαίρετα. Αν θέλετε να ορίσετε το κείμενο του κάθε κουμπιού να είναι άδειο γιατί μόλις ξεκίνησε ένα νέο παιχνίδι και δεν θέλω καμία Xs ή Os να μείνει πάνω μπορώ να το κάνω αυτό. Μπορώ να πω ότι θέλω την άποψη με την ετικέτα, 1, 2, 3, 4 και τα λοιπά. Αυτό θα τραβήξει ένα διαφορετικό κουμπί κάθε φορά. Εδώ είμαι πρόκειται να το ρίξει στο UIButton. Ακριβώς όπως θα μπορούσαμε να ρίχνει ints να επιπλέει και το αντίστροφο αυτό λέει ότι θέλω να ρίξει το σε ένα UIButton. Αυτό σημαίνει ότι το είδος του αυτό θα είναι μια * UIButton λόγω της δείκτες, αλλά μην ανησυχείτε, δεν είναι πια τρομακτικό. Μόλις έχω αυτό το κουμπί Πάω να καλέσει μια μέθοδο σε αυτό. Αυτή η μέθοδος ονομάζεται setTitle forState, έτσι και αυτό λέει Θέλω να ρυθμίσετε το κείμενο του κουμπιού να είναι η κενή συμβολοσειρά, και θέλω να είναι η κενή συμβολοσειρά, όταν δεν είναι πατημένο. Αν είμαι με τη χρήση αυτής της μεθόδου, μπορώ να αλλάξω το κείμενο του κουμπιού μόλις κάποιος χτυπά, αλλά θέλουμε να πούμε όταν το κουμπί είναι απλά κάθεται εκεί Θέλω το κείμενο να είναι κενό. Τέλος, θα πάμε για την προετοιμασία του σκάφους μου, και Πάω να πω ότι όλα είναι επί του παρόντος σε 0, έτσι αυτό μέλη του διοικητικού συμβουλίου αμετάβλητη είναι ένα μεταβλητό πίνακα, το οποίο σημαίνει ότι μπορούν να καλέσουν το addObject μέθοδο και μόνο ένα 0 στο εσωτερικό του. Αυτό είναι τι συμβαίνει όταν μπορώ να δημιουργήσω ένα νέο παιχνίδι. Ας ρίξουμε μια ματιά σε ένα άλλο. Η μέθοδος αυτή εδώ είναι η IBAction που πρόκειται να πιεστεί κάθε φορά που ένα από αυτά τα τετράγωνα είναι πατημένο. Τώρα έχουμε κάποια Tic Tac Toe λογική εδώ. Θα καταλάβω τη σειρά των οποίων είναι, και με βάση αυτό που εμείς είτε ένα Χ ή O, αλλά παρατηρούμε ότι είμαστε το ίδιο επαναχρησιμοποίηση χειρισμού συμβάντων για κάθε ένα από αυτά τα κουμπιά. Αυτό σημαίνει ότι δεν έχουν μια μέθοδο για την κορυφή αριστερό κουμπί, μια διαφορετική μέθοδο για το κουμπί κάτω δεξιά, αν και θα μπορούσα να έχω κάνει αυτό. Αυτό δεν θα ήταν πραγματικά καλό σχεδιασμό. Τι κάνω εδώ είναι Είμαι πραγματικά πρόκειται να καθορίσουν τι η ετικέτα του κουμπιού που πατήθηκε είναι. Θα παρατηρήσετε ότι η μέθοδος αυτή το παιχνίδι παίρνει ένα επιχείρημα. Λέγεται αποστολέα, και τι αποστολέας είναι αποστολέας πρόκειται να αντιπροσωπεύουν ακριβώς αυτό που λήφθηκε η δράση. Αν πατήσετε ένα κουμπί, αυτό αποστολέας θα είναι ότι UIButton που πιέζεται πραγματικά, έτσι ώστε να σημαίνει ότι UIButton έχει μια ετικέτα, επειδή δημιούργησα μια ετικέτα. Αν θέλω να πάρω την ετικέτα μπορώ απλά να πω Θέλω την ετικέτα του αποστολέα, και πάλι, έχω χυτό ακριβώς σε UIButton. Τυχαίνει να γνωρίζω ότι ο αποστολέας θα είναι μια UIButton. Δεν πρέπει πάντα να είναι μια UIButton. Θα μπορούσα, για παράδειγμα, καταχωρήστε το ίδιο χειρισμού συμβάντων  για ένα για ένα κουμπί, μία για ένα ολισθητήρα. Σε αυτή την περίπτωση, ξέρω ότι είναι όλα τα κουμπιά, έτσι Πάω να πω Θέλω αυτό να είναι ένα κουμπί, και τότε μπορώ να πάρω την ετικέτα, και από την ετικέτα τώρα ξέρω πού είμαι μέσα από το διοικητικό συμβούλιο. Τότε μπορώ να οριστεί απλά είτε το Χ ή το Ο, να αναστρέψετε τη σειρά του, ελέγξετε ποιος έχει κερδίσει, κ.λπ.. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό το μέτρο; Εντάξει, όλος ο κώδικας που δημοσιεύτηκε στο διαδίκτυο, δεν θέλουμε να μπει σε πάρα πολύ της λογικής Tic Tac Toe, αλλά τώρα μπορείτε να δείτε ότι πραγματικά όλοι κάνουμε εμείς είναι looping πάνω από αυτό το φάσμα, έτσι έχουμε ένα ζευγάρι των βρόχων για εδώ, και είμαστε απλά σε σύγκριση με δείτε έχουμε έναν αγώνα σε όλες τις γραμμές, ένας αγώνας σε μια στήλη ή κάτι τέτοιο. Για να εκτελέσετε πραγματικά αυτό το app, αν πατήσετε σε ένα από αυτά τα κουμπιά ότι η μέθοδος παιχνίδι απολύθηκε, έτσι ώστε σημαίνει ότι μόλις που το κουμπί για να είναι ένα Χ, έτσι τώρα αυτό το κουμπί θα είναι ένα Ο, και ούτω καθεξής, και έτσι αυτό είναι το πώς αρχίζουμε να αλληλεπιδράσει με αυτό το μοναδικό app σελίδα. Θα μετά τον κώδικα, έτσι αισθάνεται ελεύθερη να λάβουν γνώση ότι, αλλά ας μιλήσουμε τώρα για ορισμένες εφαρμογές που είναι κάτι περισσότερο από μία σελίδα. Όσο συναρπαστικό κι Tic Tac Toe ήταν, πολλές εφαρμογές στο εσωτερικό του iOS είναι το είδος αυτών των τρυπάνι κάτω τα πράγματα με πολλαπλές οθόνες. Η πρώτη έννοια ότι θα πρέπει να μιλήσουμε για τα πρωτόκολλα, και ένα πρωτόκολλο είναι απλά ένα σύνολο των μεθόδων ότι μπορείτε να υπόσχονται να καθορίσει. Αν μπορώ να δημιουργήσω αυτό το νέο πρωτόκολλο με 2 μεθόδους, αυτή η πρώτη, αν ο τύπος επιστροφής είναι άκυρη, κάλεσα το foo. Είναι δεν παίρνει ορίσματα. Έχω μια άλλη μέθοδο. Δεν επιστρέφει int. Κάλεσα το μπαρ, και παίρνει ένα επιχείρημα. Όλο αυτό το πρωτόκολλο είναι ότι λέγεται SomeProtocol μέχρι εδώ, αυτό είναι ένα σύνολο από πράγματα που μπορεί κάποιος να εφαρμόσει. Δεν έχω μέσα από αυτό το πρωτόκολλο, δήλωσε foo τι κάνει. Αντ 'αυτού, απλά λέω θα μπορούσατε να ορίσετε foo, αν θέλετε να. Αν είμαι δημιουργώντας έναν ελεγκτή άποψη ή τη δημιουργία μιας κατηγορίας Μπορώ μέσα από αυτή την υπόσχεση για την εφαρμογή της κλάσης ορισμένες από αυτές τις μεθόδους, έτσι για παράδειγμα, εάν πούμε αυτό λέει τώρα κάνω μια υπόσχεση να σας πω ότι μέσα αυτής της κατηγορίας ελεγκτή άποψη θα έχω για τους ορισμούς τόσο foo και μπαρ. Γιατί είναι χρήσιμο; Πολλά εξαρτήματα στο εσωτερικό του iOS να επωφεληθούν από αυτό πρότυπο σχέδιο που ονομάζεται αντιπροσωπεία, και ό, τι λέει η αντιπροσωπεία είναι ότι, για παράδειγμα, αν έχω ένα πλαίσιο κειμένου και υπάρχουν κάποια γεγονότα που θα μπορούσαν να καταχωρηθούν στο εσωτερικό του πλαισίου κειμένου μου, και όχι στη δημιουργία ξεχωριστών εκδηλώσεων τι μπορώ να κάνω είναι μπορώ να πω ο εκπρόσωπος της αυτό το πλαίσιο κειμένου θα είναι κάποιο αντικείμενο. Όταν λέω ότι αυτό είναι ένα πληρεξούσιο τώρα αυτό σημαίνει ότι κάθε φορά που κάποιο γεγονός θα έχουν ψηθεί στο πλαίσιο κειμένου αντί να καταχωρήσετε ή κάτι τέτοιο είναι ακριβώς πρόκειται να καλέσετε μια μέθοδο για τον αντιπρόσωπο. Για παράδειγμα, μέσα από πλαίσιο κειμένου μου έχω μια μέθοδο για όταν πατάω ότι κάνει το κουμπί στην κάτω δεξιά γωνία, και έτσι αντί για την εγγραφή χειρισμού συμβάντων αυτό που μπορώ να πω είναι πλαίσιο κειμένου, εδώ είναι ένα αντικείμενο που θέλω να καλέσετε μια μέθοδο για κάθε φορά που κάποιος πατήσει το κουμπί γίνει, και αυτό σημαίνει ότι το αντικείμενο πρέπει να εφαρμόσει κάποιο πρωτόκολλο που λέει Υπόσχομαι να ορίσει αυτή την ενέργεια γίνεται κουμπί, γιατί αν δεν καθορίζει την μέθοδο και θα πατήστε το κουμπί Τέλος, τότε πρόκειται να είναι συγχέοντας. Ας ρίξουμε μια ματιά σε ένα παράδειγμα. Εδώ έχω απλά ένα πλαίσιο κειμένου, και μία από τις ιδιότητες του αυτό το πλαίσιο κειμένου εδώ σε αυτή τη δεξιά πλευρά είναι ο εκπρόσωπος. Αυτή είναι μια ιδιότητα της κατηγορίας. Αυτό που έκανα εδώ είναι να ελέγξω κλικ, και σύρθηκε από αυτό το σημείο εδώ με τον ελεγκτή άποψη, και ότι λέει τώρα η εκπρόσωπος της αυτό το πλαίσιο κειμένου πρόκειται να είναι ο ελεγκτής άποψη. Αυτό σημαίνει ότι όταν κάποιες ενέργειες συμβεί, παρά την εγγραφή ξεχωριστές χειρισμού συμβάντων θέλω να τους στείλει στον πληρεξούσιο. Τώρα, ας ρίξουμε μια ματιά σε ελεγκτή την άποψή μου. Μέσα από το αρχείο. Η έχω κάνει μια υπόσχεση. Έχω υποσχεθεί να εφαρμόσει κάποιες μεθόδους μέσα από αυτό το πρωτόκολλο ονομάζονται UITextFieldDelegate, και πάλι, αυτό είναι μόνο μερικές λίστα με μερικά πράγματα που μπορώ να επιλέξουν να εφαρμόσουν. Αν έρθω εδώ σε. Μ. αρχείο μου, έχω εφαρμόσει μια τέτοια μέθοδος. Έχω την αποκάλεσε textFieldShouldReturn γιατί αυτό είναι ό, τι λεγόταν στο εσωτερικό του πρωτοκόλλου. Και τώρα κάθε φορά που πατάω το κουμπί γίνει μέσα από αυτό το πεδίο κειμένου αυτό είναι ό, τι πρόκειται να πάρει ονομάζεται, έτσι δεν είχα εγγραφεί ένα πρόγραμμα χειρισμού συμβάντων. Έχω συνδέσει τον εκπρόσωπο, και κάθε φορά που αυτό το γεγονός έχει απολυθεί αυτή είναι η μέθοδος που θα πάρει η ονομασία της, οπότε αν έρθω εδώ για να storyboard μου και να τρέξω το- Αν και αυτό είναι φόρτωση μπορούμε να δούμε τι κάνει. Στην οθόνη του υπολογιστή μου έχω 2 πράγματα. Έχω αυτό το πεδίο κειμένου, και έχω αυτή την ετικέτα. Είμαι απλά λέγοντας θέλω το κείμενο αυτής της ετικέτας να είναι ίσο με ό, τι ο χρήστης πληκτρολογήσει στο εσωτερικό του πεδίου κειμένου. Η επόμενη γραμμή εδώ είναι απλά μια μέθοδος που είμαι καλώντας στο πεδίο κειμένου που λέει ότι θέλω να κρύψετε το πληκτρολόγιο. Αυτή είναι μόνο η αυθαίρετη μέθοδος που επέλεξε η Apple. Και πάλι, πριν έκανα κάτι που είχα να συνδέσετε τα πάντα, έτσι ήρθα για πρώτη φορά εδώ. Από την άποψη μου ελεγκτή σύρετε πάνω στο πλαίσιο κειμένου. I αφήσει να πάει, και μπορώ να δω εδώ που μπορώ να κάνω αυτή την ιδιότητα πεδίο κειμένου δεδομένου ότι εδώ στον ελεγκτή άποψη που έχω ορίσει ένα ακίνητο αυτό είναι ένα από IBOutlet ένα πεδίο κειμένου. Αυτό λέει ότι μπορώ να συνδέσετε μέχρι αυτό το ακίνητο σε ένα πεδίο κειμένου στο UI μου. Τώρα, όταν κάνω κλικ αυτό που μπορώ να αρχίσετε να πληκτρολογείτε. Τώρα αν κάνω κλικ στο κουμπί γίνει αυτό πρόκειται να βάλει φωτιά ένα γεγονός που μπορώ τώρα να ανταποκριθεί στις. Δεν χειρισμού συμβάντων. Αυτό είναι το πώς θα ήθελα απλώς απάντησε σε αυτό το κουμπί γίνεται. Κάντε νόημα; Αυτό δεν είναι ένα πρότυπο σχέδιο που-ίσως να μην βρείτε ποτέ τον εαυτό σας δημιουργώντας το δικό σας πρωτόκολλο, αλλά απλά ξέρω ότι μερικοί διαφορετικά συστατικά iOS εγγραφείτε γεγονότα με διαφορετικούς τρόπους. Κουμπιά, για παράδειγμα, να χρησιμοποιούν αυτά τα IBActions. Τα πεδία κειμένου, από την άλλη πλευρά, πρόκειται να χρησιμοποιείτε πληρεξούσιους. Μπορούμε να δούμε και μπορείτε να δείτε όλα αυτά στο εσωτερικό της τεκμηρίωσης. Με την ευκαιρία, υπάρχει πραγματικά ένας τόνος των πράγματα UI ενσωματωμένο στο iOS για σας, Έτσι, για παράδειγμα, ο τρόπος που έκανα και λένε γίνει στην κάτω δεξιά γωνία είναι Επέλεξα αυτό το πεδίο κειμένου. Ήρθα εδώ. I κύλιση κάτω από ένα κομμάτι για να επιστρέψει κλειδί, και μπορώ να πραγματικά να κάνει αυτό ένα σωρό πράγματα, όπως αν θέλω να πω ότι κλήσης έκτακτης ανάγκης αντί μπορώ να το κάνουμε αυτό, το οποίο είναι εντελώς τυχαία, και δεν ξέρω γιατί υπάρχει ένα ενσωματωμένο κουμπί κλήσης έκτακτης ανάγκης, αλλά υπάρχει, λέει κλήσης έκτακτης ανάγκης σε πολύ μικρά γράμματα. Ορίστε. Σίγουρα διερευνήσει όλες αυτές τις διαφορετικές επιλογές στο iOS. Οποιεσδήποτε ερωτήσεις σχετικά με εκπροσώπους; Και πάλι, μόλις ένα ενδιαφέρον πρότυπο σχεδιασμού που θα πρέπει να γνωρίζουν. Εντάξει, ας ρίξουμε μια ματιά δίπλα στο τραπέζι τις απόψεις. Μια προβολή πίνακα είναι ουσιαστικά ο κατάλογος των αντικειμένων που είναι σε όλη τη χώρα σε iOS. Όταν ρίχνεις μέσα από όλες τις επαφές σας, ψάχνετε στο τη σύσταση σελίδα, και αυτό το είδος της λίστας των πραγμάτων καλείται προβολή πίνακα. Εφαρμογή προβολή πίνακα στο iOS είναι αρκετά απλή. Αντί να κάνουν μια τάξη που κατεβαίνει από την UIViewController όπως έχουμε κάνει στο παρελθόν απλά πρέπει να πούμε όχι Πάντα UIViewController δεν θέλω να κάνω, Λέω πάντα ένα UITableViewController δεν θέλω να κάνω, έτσι ώστε απλά προσθέτει κάποια επιπλέον πράγματα που είναι εντελώς κάνει για μας. Πρέπει να κάνουμε πολύ λίγα για να ουσιαστικά να συμπληρώσετε τα κενά στο εσωτερικό του πίνακα. Για να εμφανιστεί ένα τραπέζι που πρέπει να απαντήσετε σε μερικές ερωτήσεις. Η πρώτη ερώτηση που πρέπει να απαντήσουμε είναι πόσα τμήματα βρίσκονται στο τραπέζι; Όταν flipping μέσω των επαφών app σας, θα παρατηρήσετε ότι αυτό είναι το είδος του που διοργανώθηκε από την As, τότε έχετε το Β, και έχετε αυτό το μικρό υπο κεφαλίδα. Καθένα από αυτά έχει ένα τμήμα που ονομάζεται. Μπορείτε μπορεί ή δεν μπορεί να χρειαστεί αυτά. Το πρώτο πράγμα που πρέπει να κάνετε είναι να εφαρμόσει μια μέθοδο που ονομάζεται tableView: numberOfSectionsInTableView. Που επιστρέφει απλά το πόσα τμήματα που έχετε, έτσι αυτό θα μπορούσε να πει επιστρέψει ένα, αν έχετε ένα μεγάλο προβολή πίνακα. Το επόμενο ερώτημα που iOS πρέπει να γνωρίζει είναι πόσες σειρές έχετε; Για παράδειγμα, είστε ρίχνεις μέσα από μια προβολή πίνακα. Έχετε ένα σταθερό αριθμό των τραγουδιών που ψάχνετε ή σε ένα σταθερό αριθμό επαφών. Αν είστε μου, βέβαια, δεν είναι ότι πολλοί, και έτσι αυτό είναι το πώς iOS ξέρει πόσα κύτταρα για να εμφανιστεί. Και πάλι, αυτό θα μπορούσε να πει κάτι σαν επιστροφή 3. Προβολή πίνακα μου έχει 3 σειρές. Τέλος, iOS πρέπει να γνωρίζει τι κάθε κύτταρο μοιάζει, έτσι αυτό που είναι πραγματικά πρόκειται να κάνετε είναι να καλέσετε τη μέθοδο αυτή εδώ κάτω, αυτό tableView: cellForRowAtIndexPath. Είναι πρόκειται να καλέσετε τη μέθοδο αυτή σε κάθε κύτταρο στο εσωτερικό του πίνακα σας. Πώς ξέρω πόσες φορές να το ονομάσουμε; Λοιπόν, σας το είπα μέσα από τον αριθμό των γραμμών στο τμήμα. Εμείς πάμε για να καλέσετε αυτό σε κάθε ένα από τα κύτταρά μας, και μέσα από αυτό είναι όπου μπορείτε να κάνετε πράγματα όπως πραγματικά ρυθμίσετε το κείμενο ή να σας πω τι μικρό μπλε κουμπί στη δεξιά πλευρά κάνει. Το σχέδιο για να πάρει αυτά τα κύτταρα, θα πάμε να χρησιμοποιήσετε αυτή τη μέθοδο που ονομάζεται dequeueReusableCellWithIdentifier. Objective-C είναι πραγματικά πολύ καλά γνωστή για την γελοία μήκος των ονομάτων τους μέθοδο, και αυτό είναι πραγματικά ένα ωραίο παράδειγμα στην περίπτωση σημείο. Τι αυτή η μέθοδος δεν είναι αυτό ακριβώς λέει θέλω να μου δώσεις ένα κελί. Ακριβώς ένα πράγμα iOS. Αν έχετε κάτι σαν 100.000 τραγούδια στο iPod σας iOS τι δεν θέλετε να κάνετε είναι διαθέσει 100.000 κύτταρα, γιατί αν είσαι στην κορυφή της λίστας σας, θα πρέπει πραγματικά να εκχωρήσει μνήμη για το κύτταρο που είναι 99.000 γραμμές προς τα κάτω; Όχι, γιατί όπως είστε κύλιση μπορείτε να το είδος του διαθέσουν όσο προχωράς. Αυτό γίνεται για σας. Δεν χρειάζεται να ανησυχείτε για όλα αυτά τα ηλίθια πράγματα απόδοση. Το μόνο που λένε είναι να καλέσετε αυτό το dequeueReusableCellWithIdentifier μέθοδο, και αυτό λέει, εντάξει, αν θα πρέπει να πάω για να δημιουργήσετε ένα νέο τηλέφωνο για σας. Αλλά αν είστε στο κάτω μέρος του πίνακα και έχετε ήδη διατεθεί κάποια κύτταρα στην κορυφή του πίνακα που δεν είστε πραγματικά πρόκειται να χρειαστεί σύντομα Πάω να σας δώσω ένα από τα πίσω αντί να τη διαθέσει ένα νέο, και έτσι αυτό είναι ένα ωραίο ανησυχία απόδοσης. Δεν χρειάζεται να διαθέσουν τον εαυτό σας στα κύτταρα. Αυτό πρόκειται να σας δώσει πίσω ένα κελί. Είναι πρόκειται να σας επιστρέψει ένα αντικείμενο κυττάρων. Μόλις έχετε το αντικείμενο κυττάρων που μπορείτε να κάνετε πράγματα για αυτό. Μπορείτε να ρυθμίσετε το κείμενο του κελιού με αυτό το ακίνητο που ονομάζεται ετικέτα κειμένου. Μπορείτε να προσθέσετε αυτό το βέλος στα δεξιά ή κάποια άλλη τυχαία πράγματα με αυτή την άλλη ιδιότητα που ονομάζεται accessoryType, και ούτω καθεξής και ούτω καθεξής. Ας ρίξουμε μια ματιά στην πραγματικότητα την εφαρμογή θέα πίνακα. Όταν δημιούργησα αυτό το έργο αντί να πει ενιαία αίτηση άποψη που πραγματικά ήρθε εδώ σε master-λεπτομέρεια εφαρμογής, και έτσι ουσιαστικά αυτό αντιστοιχεί στην εφαρμογή ηλεκτρονικού ταχυδρομείου για το iPad με την προβολή πίνακα στα αριστερά και στη συνέχεια τα περιεχόμενα στα δεξιά. Με το iPod ή το iPhone αυτό θα αντιστοιχεί σε μια ενιαία προβολή πίνακα. Αυτό είναι όπου πήρα μίζα κωδικό μου. Ας ρίξουμε πρώτα μια ματιά στο storyboard. Όλο αυτό έγινε για μένα, ουσιαστικά δημιουργήθηκε. Αυτή η μπάρα πλοήγησης μου έδειξε τι ένα κύτταρο παράδειγμα θα μπορούσε να μοιάζει, και μπορώ να κάντε διπλό κλικ αυτό, αλλάξτε τον τίτλο. Οποιεσδήποτε άλλες ανησυχίες UI μπορώ να χειριστεί εκεί. Το αρχείο κεφαλίδας φαίνεται πολύ απλό. Αντί να λέμε αυτό είναι UIViewController είμαστε τώρα λέγοντας ότι αυτό είναι ένα TableViewController, έτσι ξέρουμε ότι θέλουμε να καλέσει όλες αυτές τις μεθόδους πίνακα. Στη συνέχεια θέλω να δημιουργήσω ένα ακίνητο που πρόκειται να εκπροσωπήσει τα πράγματα μέσα από το τραπέζι μου. Αυτός ο πίνακας θα εμφανίσει αυθαίρετα μια λίστα των φρούτων, και γι 'αυτό πρέπει να δημιουργήσουμε κάποια σειρά στην οποία μπορείτε να εισάγετε τα φρούτα. Μέσα από το αρχείο της εφαρμογής μου το πρώτο πράγμα που θέλω να κάνω είναι που θέλω να είμαι σίγουρη ότι η προετοιμασία αυτή την σειρά. Είπα alloc init, δημιούργησε σειρά μου τα φρούτα, και είμαι προσθέτοντας 4 πράγματα σε αυτό, ένα από τα οποία είναι πολύ πιο αμφιλεγόμενη από την άλλη 3. Και τώρα έχω ένα πίνακα μεγέθους 4. Είμαστε το τίναγμα σε CS50. Έχω τώρα μια σειρά μεγέθους 4. Τώρα είμαι πρόκειται να αρχίσει να απαντά σε αυτά τα ερωτήματα, και στην πραγματικότητα, όταν δημιούργησα αυτό το app όλα αυτά είχε ήδη κάνει για μένα. Δεν είχα να πληκτρολογήσετε τον αριθμό των τμημάτων σε προβολή πίνακα. Ήταν ήδη εκεί, και είμαι συμπληρώνοντας τα κενά. Πόσα τμήματα μπορώ να έχω; Ένα. Όλα γίνονται. Πόσες σειρές έχω; Λοιπόν, έχω μία γραμμή για κάθε φρούτο, έτσι αυτή η μέτρηση είναι μια ιδιότητα του κάθε πίνακα που λέει πόσο μεγάλο είναι αυτό; Αυτό είναι το πώς πολλές σειρές που έχω. Τέλος, θέλω να πω τι κάνει κάθε κύτταρο μοιάζει; Πάω να πω dequeueReusableCellWithIdentifier. Και πάλι, αυτό είχε ήδη γράψει για μένα. Δεν είχα να κάνω μόνος μου αυτό, και θέλω να πάρω πίσω αυτό το κύτταρο σε αυτή τη θέση. Να θυμάστε ότι είμαστε καλώντας την ίδια μέθοδο για κάθε κύτταρο, και αυτό το επιχείρημα εδώ, αυτό το επιχείρημα indexPath, λέει ό, τι σειρά είμαι μέσα Αν πω indexPath.row εδώ κάτω αυτό θα είναι μηδέν, τότε θα είναι 1, τότε θα είναι 2, και αυτό είναι έτσι γνωρίζω τι κύτταρο είμαι σήμερα την εμφάνιση. Θέλω να ρυθμίσετε το κείμενο του κελιού χρησιμοποιώντας αυτή την ιδιότητα Ετικέτακειμένου να πάει μέσα σειρά φρούτα μου και να πάρει το αντικείμενο που αντιστοιχεί σε κάθε σειρά. Εάν αυτό είναι ένα string, είμαι τώρα ρύθμιση το ακίνητο κείμενο σε μια σειρά. Μπορώ να κάνω κάτι άλλο. Μπορώ να εγγραφούν επίσης ένα πρόγραμμα χειρισμού συμβάντων για κάθε ένα από τα κύτταρα, έτσι όταν πατήσετε το καθένα από αυτά τα κύτταρα didSelectRowAtIndexPath αυτό, αυτό πρόκειται να κληθούν για μένα, έτσι απλά με τον ορισμό αυτό μπορώ τώρα να χειριστεί ό, τι συμβαίνει όταν πατάτε ένα κελί, και πάλι, είμαστε περνώντας στην οποία κελί τρυπήθηκε έτσι ώστε να μπορούμε να επαναχρησιμοποιούν το ίδιο χειρισμού συμβάντων για όλα τα κύτταρά μας. Και πάλι, αυτό είναι κάτι iOS κάνει για μένα. Ας εμφανιστεί ένα άλλο ενοχλητικό popup που λέει απλά θα πάρει κάτι στην περίπτωση που κάτι πρόκειται να είναι το αντικείμενο σειράς. Όταν το τρέχω, είμαι πρόκειται να έχουν αυτή την ωραία θέα πίνακα με μία σειρά για κάθε ένα από αυτά τα φρούτα, και αν ακουμπάτε μια μου λέει τι συνέβη. Κάντε νόημα; Ας οικοδομήσουμε μια λίγο πιο περίπλοκη από μια εφαρμογή, όσο κάνοντας κλικ διαλέξατε ντομάτα είναι. Το ωραίο μέρος για την storyboarding είναι αυτό που είναι, όχι μόνο θα μας βοηθήσει οθόνες σχεδιασμού ξεχωριστά, αυτό είναι, επίσης, πρόκειται να μας βοηθήσει να δέσει μαζί μας όλο το app, έτσι ώστε η τελική εφαρμογή θα είναι κτίριο είναι αυτό το ωραίο αθλητικές ειδήσεις αναγνώστη, και γι 'αυτό πρόκειται να έχει πολλαπλές οθόνες, και γι' αυτό μπορεί πραγματικά να αντιπροσωπεύουν κάθε μία από αυτές τις πολλαπλές οθόνες για το storyboard, και εγώ να μεγεθύνετε και να δείτε app μου από ένα υψηλό επίπεδο. Για να δημιουργήσετε ένα νέο στοιχείο στο εσωτερικό του storyboard μου Είναι πραγματικά απλό εσωτερικό του Interface Builder. Αν θέλετε να προσθέσετε μια άλλη οθόνη σε αυτό, για παράδειγμα, Μπορώ πρώτη σμίκρυνση με την πρέζα ζουμ ότι η Apple αγαπά τόσο πολύ, και κάτω εδώ πριν να ψάξω για ένα κουμπί και εγώ drag and drop ένα κουμπί αν θέλετε να δημιουργήσετε μια νέα οθόνη που μπορεί πραγματικά να απλά drag and drop μια ολόκληρη ελεγκτή άποψη, οπότε αν έχω πάρει αυτό, τραβήξτε πάνω από εδώ, hey, υπάρχει μια άλλη οθόνη, έτσι και τώρα με το ίδιο αρχείο storyboard Μπορώ να έχω όλες τις οθόνες στο εσωτερικό του app μου, και μπορώ να σμίκρυνση και να δούμε πώς αλληλεπιδρούν μεταξύ τους. Αυτά δεν θα αλληλεπιδρούν ακόμη. Ο τρόπος με τον οποίο αλληλεπιδρούν οι 2 οθόνες είναι που καθορίζουν τις σχέσεις. Μπορείτε να πείτε βασικά αυτή την οθόνη, όταν πατήσετε αυτό το κουμπί, Θέλω να γλιστρήσει πάνω σε αυτή τη νέα οθόνη. Αυτό σημαίνει ότι υπάρχει αυτό το είδος της σχέσης μεταξύ  η πρώτη οθόνη και η δεύτερη οθόνη. Θα έχετε ουσιαστικά ένα βέλος από το κουμπί στη δεύτερη οθόνη λέγοντας ότι όταν πατάτε το κουμπί αυτό είναι που θέλω να πάω. Ακριβώς όπως έχουμε τον έλεγχο και έσυραν κλικ για να καθορίσει τα καταστήματα θα πάμε να κάνουμε το ίδιο πράγμα για τον καθορισμό αυτών των segues. Θα δούμε ένα παράδειγμα γι 'αυτό, και πριν τη μετάβαση στην πραγματικότητα από τη μία οθόνη στην άλλη iOS είναι αρκετά καλό για να καλέσετε τη μέθοδο αυτή που ονομάζεται prepareForSegue, και αυτό είναι όπου μπορούμε να αρχίσουμε την αποστολή δεδομένων από τη μία εφαρμογή στην άλλη. Στο παράδειγμα που είμαστε για να δούμε που θα μας επιτρέψει βασικά να φιλτράρετε ομάδες μπέιζμπολ πρωταθλήματα και από τμήματα. Όταν επιλέγετε ένα πρωτάθλημα, για παράδειγμα, θέλω να μετάβαση στην επόμενη οθόνη μου, όπου μπορώ να εμφανίσει όλα τα τμήματα σε αυτό το πρωτάθλημα ή όλες τις διαφορετικές ομάδες. Πρέπει να στείλετε σε αυτή την οθόνη τι ομάδες θα πρέπει να εμφανιστεί. Για να γίνει αυτό θα πάω να επωφεληθούν από αυτή τη μέθοδο εδώ. Τέλος, μόλις ένα τυχαίο σημείο στο iOS. Εάν θέλετε να αποθηκεύσετε τα δεδομένα δεν υπάρχει αυτό το πράγμα που ονομάζεται βασικών δεδομένων, το οποίο είναι πραγματικά το είδος των περίπλοκη για να εργαστεί με. Μπορείτε επίσης να χρησιμοποιήσετε το SQL για την αποθήκευση δεδομένων, η οποία, και πάλι, είναι ωραίο, αλλά το είδος της για την πιο σύνθετη πλευρά να συνεργαστεί με, iOS αλλά υποστηρίζει επίσης αυτά τα πραγματικά δροσερά πράγματα που ονομάζεται λίστες ιδιοκτησίας, και μια λίστα ακινήτων είναι απλά ένα αρχείο που αντιπροσωπεύει ζεύγη κλειδιών αξία. Μπορείτε να ορίσετε μια λίστα με τα πλήκτρα, και λέτε αυτό το πλήκτρο θα είναι ένας πίνακας. Αυτό το κλειδί θα είναι μια σειρά, και ουσιαστικά τίποτα που μπορείτε να κάνετε σε JSON μπορείτε να το κάνετε μέσα από μια λίστα ακινήτων, και έτσι αυτό πραγματικά ωραία μας επιτρέπει να εργαστούμε με ορισμένα στοιχεία. Για παράδειγμα, έχω αυτό το Teams.plist που δημιούργησα. Δημιούργησα ένα νέο αρχείο plist, και μπορώ να τρυπάνι κάτω. Αυτό είναι ένα λεξικό, αυτό είναι ένα λεξικό, αυτά είναι χορδές, και έτσι αυτό είναι ένα ωραίο γραφική αναπαράσταση ενός εγγράφου JSON ή απλά ένα σύνολο από ζεύγη κλειδιών αξίας, και έτσι αυτό είναι τα στοιχεία που θα πρέπει να εργάζονται με μέσα του app μου. Ας πρώτα να έρθει εδώ. Έχουμε πολλά περισσότερα αρχεία τώρα. Αλλά ας πρώτα να έρθει εδώ στον πίνακα διάταξης. Το storyboard εδώ-αν μπορώ να σμίκρυνση- μπορούμε τώρα να δούμε ότι αυτή είναι η ροή του app μου. Είμαι πρώτος πρόκειται να ξεκινήσει σε αυτή την οθόνη. Πάω να τρυπάνι κάτω σε αυτή την οθόνη, και Πάω να τρυπάνι κάτω σε αυτή την οθόνη, και μπορούμε να δούμε εδώ ότι αν το είδος του μετακινήσετε ένα από αυτά που έχουμε γύρω από αυτά τα βέλη που από εδώ και στο εδώ, και ο τρόπος που τον προσδιορίζει βέλος ήταν αν κάνετε ζουμ σε λίγο, και αν έρθω σε αυτόν τον ελεγκτή άποψη, και εδώ είναι ένα κύτταρο, και θέλω να πω ότι όταν πατήσετε ένα κελί Θέλω να γλιστρήσει πάνω στην άλλη οθόνη. Μπορώ απλά κρατήστε πατημένο το πλήκτρο ελέγχου, μετακινηθείτε πάνω από λίγο, κρατήστε πατημένο τον έλεγχο, σύρετε πάνω από αυτό το κελί και να αφήσει να πάει. Και εδώ λέμε ποια είναι η μετάβαση που θέλετε να χρησιμοποιήσετε; Θέλετε να χρησιμοποιήσετε αυτό το πράγμα διαφάνεια που λέγεται ώθηση; Θέλετε να γλιστρούν πάνω από το κάτω μέρος; Που ονομάζεται τροπική. Και μόλις κάνω κλικ ένα από αυτά, πρόκειται να συντάξει αυτό το βέλος για μένα, και αυτό σημαίνει ότι έχω πραγματικά χειρισμός τι συμβαίνει όταν πατάω αυτό το κουμπί γραφικά. Δεν έγραψα κανένα κώδικα πραγματικά να σύρετε από τη μία οθόνη στην επόμενη. Εγώ αυτό ορίζεται οπτικά μέσα του Interface Builder. Αν κάνω κλικ σε αυτό το βέλος, μπορούμε να δούμε ότι έδωσα αυτό το πράγμα ένα όνομα. Κάλεσα το showDivisions, και αυτό είναι έτσι ώστε να μπορώ να ξέρω τι μετάβαση πρόκειται να συμβεί, και θα δούμε γιατί σε μόλις ένα δευτερόλεπτο. Αυτό είναι το πώς έχω ενσύρματο μέχρι τις διαφορετικές οθόνες στο app μου. Εάν αυτό ήταν ένα κουμπί, για παράδειγμα, αντί για μία προοπτική πίνακα, Θα μπορούσα να ελέγχει κάντε κλικ στο κουμπί, σύρετε πάνω στην επόμενη οθόνη, και αυτό είναι το πώς μπορώ να κάνω πλοήγηση με αυτόν τον τρόπο. Πραγματικά γρήγορα, αν ερχόμαστε στο MasterViewController, και πάλι, είμαστε απλά πρόκειται να ορίσετε μια λίστα με τα πράγματα που θα εμφανίζεται στην προβολή πίνακα. Εδώ λέω θέλω να κάνει αυτό το plist αρχείο, και θέλω να το φορτώσετε σε ένα λεξικό, και από τη στιγμή που έχουν αυτό το λεξικό, Πάω να απαντήσει αυτές τις ίδιες ερωτήσεις ξανά. Εδώ είναι ο αριθμός των τμημάτων. Ένας, υπάρχει μία σειρά για κάθε πρωτάθλημα, και το κείμενο της κάθε κύτταρο θα πρέπει να είναι είτε το πρώτο, το πρώτο πρωτάθλημα, το δεύτερο πρωτάθλημα, και ούτω καθεξής. Τέλος, Πάω να χρησιμοποιήσετε αυτή τη μέθοδο που μόλις είδε ονομάζεται prepareForSegue, και αυτή είναι η μέθοδος που πρόκειται να απολυθούν όταν κάνω κλικ σε μία από αυτές τις γραμμές και συνεπώς ενεργοποίηση εκείνη την μετάβαση που έχει συσταθεί με τα βέλη. Αυτό λέει ότι μπορώ να έχω πολλαπλούς σχέσεις από μια οθόνη στην άλλη. Αν έχω 2 κουμπιά και κάθε κουμπί θα σας οδηγήσει σε μια διαφορετική οθόνη Πάω να έχουν 2 segues, 1 για κάθε κουμπί. Αλλά αυτή prepareForSegue είναι, πάλι, πρόκειται να επαναχρησιμοποιηθούν για κάθε μια από τις διαφορετικές σχέσεις, έτσι ώστε να σημαίνει ότι πρέπει ένα τρόπο από τον εντοπισμό εάν πατήσετε το πρώτο κουμπί ή πατάτε το δεύτερο κουμπί. Να θυμάστε, όταν έδωσα ότι segue ένα όνομα, αυτό showDivisions, αυτό είναι το πώς εγώ τώρα ξέρω ότι αυτό είναι το segue που είχε ενεργοποιηθεί. Το μόνο που θέλω να κάνω είναι που θέλω να πω Θέλω να καταλάβω τι ακριβώς χτύπησε, και έτσι για να πάρετε αυτό, μπορώ να πω ότι θέλω το indexPath για την επιλεγμένη γραμμή, θυμηθείτε το indexPath λέει ακριβώς όπου μόνο κλικ, και στη συνέχεια, θέλω να πω ότι θέλω να καταλάβω πού θα πάω. Αυτό destinationViewController, αυτό είναι μια ιδιότητα του segue. Αυτή είναι η οθόνη Πάω να, έτσι ξέρω ότι η οθόνη Πάω να ονομάζεται DivisionsViewController γιατί δημιουργήθηκε αυτή κατηγορία, και έτσι τώρα αν πω d.divisions Είμαι ρύθμιση τώρα μια ιδιότητα του ελεγκτή άποψη είμαι έτοιμος να πάει. Αυτό είναι το πώς είμαι αποστολή δεδομένων από τη μία οθόνη στην άλλη οθόνη. Απλά βλέπουν αυτό το DivisionsViewController μπορείτε να δείτε εδώ ότι στο αρχείο. h Είναι εκεί που τμήματα ιδιοκτησίας, και αυτό είναι που είμαι ουσιαστικά τη συμπλήρωση, έτσι ώστε να είναι το πώς ξέρω ότι είμαι εμφανίζει τα τμήματα που αντιστοιχούν σε το πρωτάθλημα που χτύπησα, και πάλι, η πραγματική προβολή πίνακα φαίνεται λίγο πολύ το ίδιο, απλά απαντώντας σε εκείνους 3 απλές ερωτήσεις, καθώς και τον προσδιορισμό τι συμβαίνει όταν μετακινείτε στην επόμενη οθόνη. Ακριβώς ένα ζευγάρι από άλλα πράγματα εδώ. Θα παρατηρήσετε στην κορυφή εδώ ότι αντί να πει # include Είμαι τώρα λέγοντας # εισαγωγή. Αυτό είναι μόνο ένα Objective-C πράγμα. Η εισαγωγή είναι βασικά ένα καλύτερο έκδοση του περιλαμβάνουν, και, για παράδειγμα, πρέπει να ξέρουμε τι αυτή η κατηγορία είναι, έτσι δεν μπορώ να πω ακριβώς DivisionsViewController. Αν δεν hashtag standardio.c εσωτερικό του. Αρχείο μας γ ο compiler δεν είχε ιδέα τι ήταν printf. Ομοίως, αν δεν εισάγουν το DivisionsViewController ο compiler έχει πραγματικά καμία ιδέα για το τι είναι DivisionsViewController. Απλά βεβαιωθείτε ότι μέσα από διαφορετικά αρχεία. M σας μπορείτε να βεβαιωθείτε για την εισαγωγή τα αντίστοιχα αρχεία. h, έτσι ώστε ο compiler ξέρει τι συμβαίνει. Τέλος, αυτό που η Apple δεν είναι τελικά εμφανίζει κάποια δεδομένα χρησιμοποιώντας μια προβολή ιστοσελίδων, και έτσι μια άποψη διαδίκτυο είναι ένα αντικείμενο στο οποίο μπορείτε να ενσωματώσετε ένα μικρό πρόγραμμα περιήγησης στο εσωτερικό του app σας. Το μόνο που χρειάζεται να κάνετε είναι να παράσχει μια διεύθυνση URL στο web browser σας, έτσι θέλω να πάω να mlb.mlb.com, και αυτό είναι το πώς μπορώ να έχω πρόσβαση στην αρχική σελίδα για κάθε ομάδα, και έτσι με το πέρασμα σε αυτό το URL η προβολή του web μπορεί να εμφανίσει αυτό για μένα, και δεν μπορώ να περιηγηθείτε, προσομοιωτή και είναι σε χρήση από εκείνη. Τώρα, αυτό προήλθε από plist μου. Αν κάνετε κλικ σε αυτό το επίσης ήρθε από plist μου, και αυτό το συρόμενη χειρίστηκε με τον καθορισμό αυτών segues. Εγώ κλικ σε αυτό και ένα ακόμα, και τώρα εδώ είναι UIWebView μου, έτσι ακριβώς όπως ότι εδώ είναι η ιστοσελίδα για τη διεύθυνση URL που μόλις ενσωματωμένη, και δεν είχα να χειριστεί τίποτα τρελό. Αυτό είναι το πώς να εμφανίσει μια ιστοσελίδα. Τα πράγματα όπως αυτό το κουμπί πίσω εδώ, επίσης, να μου δοθεί εντελώς δωρεάν, επειδή έχω ορίζεται αυτές τις σχέσεις με segues. Οποιεσδήποτε ερωτήσεις; Ναι. [Φοιτητικό] Έτσι, όταν χρησιμοποιείτε alloc, δεν πρέπει ποτέ να δωρεάν τίποτα; Ακριβώς, όταν σας καλούν alloc και init δεν χρειάζεται να το απελευθερώσει. ΙΟΣ πρόκειται να χειριστεί όλα αυτά για εσάς. Είναι υπέροχο, και δεν είστε το σπάσιμο κανένα κανόνα. Ναι. [Φοιτητικό] Εάν επρόκειτο να συμπεριλάβει περισσότερες ομάδες που θα μπορούσαν να χωρέσουν στην οθόνη, Θα το έχετε αυτόματα μια επιλογή κύλισης, ή είναι ότι κάτι πρέπει να προσθέσετε; Ακριβώς, αν είχα περισσότερες ομάδες, για παράδειγμα, αυτομάτως θα χειριστεί η κύλιση για μένα, και όλα τα προβλήματα απόδοσης με το τεράστιο τραπέζι είναι επίσης αντιμετωπίζονται συνολικά για μένα. Άλλες ερωτήσεις; Όλα του κώδικα αυτού πρόκειται να αναρτηθεί. Εμείς το είδος της δυσδιάκριτες για τον κόσμο λίγο πιο μικρές λεπτομέρειες, αλλά τα πράγματα όπως τον καθορισμό κάποιες ιδιότητες για την προβολή ιστοσελίδων είναι απλά πράγματα που μπορείτε να πάρετε από την περιήγηση τεκμηρίωση της Apple, η οποία είναι πραγματικά, πραγματικά όμορφα που ορίζονται. Έχουν πολλές εφαρμογές δείγμα και παράδειγμα χρήσεις από διαφορετικές API, έτσι σίγουρα μελετήστε αυτούς αν μπορείτε. Απλά μερικές χρήσιμες συνδέσεις ίσως να θέλετε να ρίξετε μια ματιά στο. Αυτά είναι μερικά εύχρηστους οδηγούς τεκμηρίωσης. Οι διευθύνσεις URL είναι τεράστιο, έτσι είναι μικρότερη. Το πρώτο είναι η ολόκληρη βιβλιοθήκη εγγράφων. Υπάρχει μικρό μπαρ αναζήτηση, οπότε αν ξεκινήσετε το κουμπί πληκτρολόγηση θα αρχίσει να σας δίνει όλες τις πληροφορίες σχετικά με όλα τα πράγματα που μπορείτε να κάνετε με ένα κουμπί. Έχω περιλαμβάνονται επίσης την Table View Οδηγός προγραμματισμού. Χειρίζεται τις απόψεις πίνακα σε πολύ περισσότερες λεπτομέρειες, πώς να κάνουμε τα πράγματα όπως προσθέτουν δυναμικά κύτταρα ή κύτταρα να επεξεργαστείτε ή να τα καταργήσετε. Υπάρχει πολλές εφαρμογές δείγμα από την Apple που θα σας δείξει πώς να το κάνουμε αυτό, και, τέλος, αυτό το τελευταίο είναι οι κατευθυντήριες γραμμές για τα Ανθρώπινα Διασύνδεσης, και αυτό είναι βασικά κάποια συζήτηση της UI συστατικά, τα πράγματα όπως δεν κάνουν ένα κουμπί που είναι 4 από 4 pixels pixels. Αυτό είναι μια κακή ιδέα, και άλλα πράγματα που η Apple θέλει να κάνεις να ενθαρρύνει τον καλό σχεδιασμό. Οι τελευταίες ερωτήσεις πριν τελειώσει; Εντάξει, σίγουρα αισθάνονται ελεύθεροι να-εργαζόμαστε πρόκειται να έχουν ειδικές ετικέτες Συζητήστε. Θα έχουμε μια iOS ένα, έτσι σίγουρα αισθάνονται ελεύθεροι να χρησιμοποιούν αυτό. Αν θέλετε να εργαστείτε με τους συμμαθητές σας για τα έργα ή να βοηθήσει να καταλάβω κάποια πράγματα τυχαία iOS διστάσετε να μου e-mail, και σίγουρα να λάβουν γνώση όλων των σε απευθείας σύνδεση κώδικα, επειδή μόνο προς το συμφέρον του χρόνου έχουμε το είδος της δυσδιάκριτες για τον κόσμο της πιο πιο λεπτομερειακή λεπτομέρειες των πραγμάτων. Αλλά αν όχι, τότε καλή τύχη σε έργα iOS σας, και ελπίζω να έχουμε μια μεγάλη εισροή των εφαρμογών στο App Store. [CS50.TV]