1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Σεμινάριο] [iOS: Γράφοντας Apps Like a Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Πανεπιστήμιο του Χάρβαρντ] 3 00:00:04,000 --> 00:00:08,000 [Αυτό είναι CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Εντάξει, ο καθένας, καλώς ήρθατε στο iOS: Γράφοντας Apps σαν αφεντικό. 5 00:00:12,000 --> 00:00:16,000 Το σεμινάριο θα επικεντρωθεί στο γράψιμο εφαρμογές για το iPhone 6 00:00:16,000 --> 00:00:19,000 και στη συνέχεια εγγράφως εφαρμογές για το iPad, και έτσι είμαστε ουσιαστικά πρόκειται να περπατήσετε μέσα 7 00:00:19,000 --> 00:00:23,000 δύο διαφορετικά παραδείγματα για το πώς να κάνει μια εφαρμογή, ένα απλό παιχνίδι σαν Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 ή αν είστε ενδιαφέρονται περισσότερο για μια εφαρμογή, όπως κάποιο είδος των ειδήσεων αναγνώστη 9 00:00:26,000 --> 00:00:30,000 ή κάτι που αλληλεπιδρά με το Διαδίκτυο θα μιλήσω γι 'αυτό, καθώς και. 10 00:00:30,000 --> 00:00:32,000 Εδώ είναι σύντομη ατζέντα μας. 11 00:00:32,000 --> 00:00:36,000 >> Τα IOS εφαρμογές γραμμένες σε γλώσσα που ονομάζεται Objective-C, 12 00:00:36,000 --> 00:00:39,000 και έτσι αυτό είναι λίγο παρόμοια με C, αλλά δεν είναι πραγματικά καθόλου, 13 00:00:39,000 --> 00:00:41,000 έτσι θα μιλήσουμε λίγο για την ίδια τη γλώσσα 14 00:00:41,000 --> 00:00:45,000 και στη συνέχεια, πώς να χτίσει το iPhone εφαρμογές που χρησιμοποιούν αυτό το πρόγραμμα app ονομάζεται Xcode, 15 00:00:45,000 --> 00:00:48,000 τα οποία, αν δεν το έχετε κατεβάσει ακόμα διστάσετε να ξεκινήσει η λήψη τώρα. 16 00:00:48,000 --> 00:00:50,000 Είναι αρκετά gigabytes. 17 00:00:50,000 --> 00:00:54,000 Θα πρέπει να είναι δωρεάν για το App Store, έτσι θα πρέπει να έχετε έναν υπολογιστή Mac 18 00:00:54,000 --> 00:00:57,000 ιδανικά τρέχει την τελευταία έκδοση του OS X. 19 00:00:57,000 --> 00:00:59,000 Αν δεν είστε, δεν υπάρχει πρόβλημα. 20 00:00:59,000 --> 00:01:02,000 Έχουμε Macs στο κέντρο της επιστήμης στη διάθεσή σας 21 00:01:02,000 --> 00:01:05,000 εγκατασταθεί με Xcode, και έτσι αισθάνεται ελεύθερη να χρησιμοποιήσει αυτές για την ανάπτυξη. 22 00:01:05,000 --> 00:01:07,000 Αν θέλετε να κάνετε μια εφαρμογή, αλλά δεν έχουν έναν υπολογιστή Mac, μην ανησυχείτε. 23 00:01:07,000 --> 00:01:09,000 Υπάρχει αφθονία των πόρων πανεπιστημιούπολη για αυτό. 24 00:01:09,000 --> 00:01:15,000 Και έτσι στη συνέχεια θα πάμε να καλύψει 2 μεγαλύτερα παραδείγματα των διαφόρων εφαρμογών που μπορείτε να κάνετε. 25 00:01:15,000 --> 00:01:19,000 Objective-C είναι τεχνικά αυτό που ονομάζεται ένα σούπερ σύνολο C. 26 00:01:19,000 --> 00:01:24,000 Αυτό σημαίνει ότι κάθε κώδικας C είναι επίσης έγκυρη Objective-C κώδικα. 27 00:01:24,000 --> 00:01:29,000 Αυτό σημαίνει ότι το είδος του αγωγού μαγνητοσκοπημένο σε ορισμένα επιπλέον χαρακτηριστικά για να C. 28 00:01:29,000 --> 00:01:33,000 Μερικά από αυτά τα χαρακτηριστικά δεν χρειάζεται να περιλαμβάνουν γράψει ποτέ malloc πάλι, δόξα τω Θεώ, 29 00:01:33,000 --> 00:01:36,000 Δεν χρειάζεται να ανησυχείτε για τα ηλίθια δείκτες και την απελευθέρωση τους και όλα αυτά τα πράγματα 30 00:01:36,000 --> 00:01:40,000 που μισούσε για την C, και αυτό είναι το είδος του πάει σε Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Τώρα, Objective-C έχει επίσης μια πολύ μεγαλύτερη βιβλιοθήκη πρότυπο, 32 00:01:43,000 --> 00:01:47,000 έτσι υπάρχει πολύ περισσότερη λειτουργικότητα μπορείτε να πάρετε δωρεάν μέσα από Objective-C. 33 00:01:47,000 --> 00:01:50,000 Να θυμάστε, όταν γράφαμε PHP έχουμε παρατηρήσει ότι πήγαμε από 34 00:01:50,000 --> 00:01:54,000 το μικρότερο γλώσσα για τη γιγαντιαία βιβλιοθήκη του όλα αυτά τα τρελά πράγματα που μπορείτε να κάνετε. 35 00:01:54,000 --> 00:01:56,000 Το ίδιο συμβαίνει και στο iOS. 36 00:01:56,000 --> 00:01:59,000 Υπάρχει αντικείμενα για πράγματα όπως το ημερολόγιο βουδιστές, και πραγματικά τίποτα 37 00:01:59,000 --> 00:02:05,000 μπορείτε ενδεχομένως να σκεφτείτε ίσως υπάρχει ήδη σε εφαρμογή Objective-C της. 38 00:02:05,000 --> 00:02:08,000 Ο στόχος μέρος του Objective-C είναι κάτι αναφορά 39 00:02:08,000 --> 00:02:11,000 που ονομάζεται Αντικειμενοστρεφής Προγραμματισμός. 40 00:02:11,000 --> 00:02:14,000 Αυτό είναι το είδος της μια νέα έννοια, αλλά στην πραγματικότητα έχουμε μάθει ως επί το πλείστον 41 00:02:14,000 --> 00:02:17,000 πολλές από αυτές τις έννοιες που έχουν ήδη. 42 00:02:17,000 --> 00:02:19,000 Η ιδέα πίσω από Αντικειμενοστρεφής Προγραμματισμός είναι ότι θα πάμε για να δομήσει 43 00:02:19,000 --> 00:02:23,000 πολύ κωδικό σας γύρω από αυτά τα πράγματα που ονομάζονται τάξεις, 44 00:02:23,000 --> 00:02:26,000 και αυτά τα μαθήματα δοξαστεί πραγματικά structs. 45 00:02:26,000 --> 00:02:30,000 Μέσα από ένα struct που ουσιαστικά είπε εδώ είναι ένα πράγμα, 46 00:02:30,000 --> 00:02:32,000 και αυτό το πράγμα μπορεί να έχουν τα μέλη. 47 00:02:32,000 --> 00:02:35,000 Για παράδειγμα, ένας κόμβος σε μια συνδεδεμένη λίστα θα μπορούσε να έχει άλλα πράγματα 48 00:02:35,000 --> 00:02:38,000 σαν μία τιμή, ένας δείκτης προς τον επόμενο κόμβο στον κατάλογο, 49 00:02:38,000 --> 00:02:44,000 και μαζί ότι ο δείκτης και η αξία αυτή αποτελείται από ένα στιγμιότυπο μιας struct. 50 00:02:44,000 --> 00:02:47,000 Τα μαθήματα είναι πολύ παρόμοια, εκτός από 51 00:02:47,000 --> 00:02:50,000 τάξεις μπορούν επίσης να έχουν συναρτήσεις μέσα από αυτούς. 52 00:02:50,000 --> 00:02:54,000 Όταν κήρυξε struct, θα μπορούσαμε να πούμε μόνο int n * ή επόμενο κόμβο. 53 00:02:54,000 --> 00:02:57,000 >> Τώρα με Objective-C μπορούμε να βάλουμε πραγματικά λειτουργίες 54 00:02:57,000 --> 00:02:59,000 μέσα από αυτά τα πράγματα. 55 00:02:59,000 --> 00:03:03,000 Ένα άλλο πράγμα που μπορεί να κάνει μαθήματα είναι ότι μπορεί να κληρονομήσει δεδομένα από άλλες τάξεις. 56 00:03:03,000 --> 00:03:07,000 Για παράδειγμα, θα πρέπει να ψάχνει σε μια δέσμη των ενσωματωμένων σε Objective-C τάξεις. 57 00:03:07,000 --> 00:03:11,000 Ένας από αυτούς θα μπορούσε να είναι η τάξη που αντιπροσωπεύει την άποψη για μία οθόνη, 58 00:03:11,000 --> 00:03:14,000 και έτσι λέγοντας θέλω να εφαρμόσουν τη δική τους άποψη μου 59 00:03:14,000 --> 00:03:18,000 λέμε βασικά κάποιος πάνω στην Apple, κατά πάσα πιθανότητα πραγματικά καλούς ανθρώπους, 60 00:03:18,000 --> 00:03:21,000 έγραψε αυτή την κατηγορία για μένα, και χειρίζεται τα πράγματα όπως εμφάνιση κουμπιά 61 00:03:21,000 --> 00:03:25,000 ή καθιστώντας την οθόνη, και θα είναι πολύ πικραμένος 62 00:03:25,000 --> 00:03:28,000 να εφαρμόσει όλα αυτά τα λειτουργικότητα τους εαυτούς μας, και έτσι με απλά 63 00:03:28,000 --> 00:03:31,000 κληρονομεί τα δεδομένα μπορούμε να πούμε ό, τι κάνατε σε αυτή την κλάση 64 00:03:31,000 --> 00:03:34,000 Θέλω, επίσης, στο εσωτερικό της τάξης μου, και στη συνέχεια, Πάω να κάνω κάποια άλλα πράγματα, 65 00:03:34,000 --> 00:03:37,000 δηλαδή την υλοποίηση μιας εφαρμογής. 66 00:03:37,000 --> 00:03:40,000 Αυτό είναι το τι σημαίνει κληρονομιά λέξη. Θα δούμε ένα πιο συγκεκριμένο παράδειγμα. 67 00:03:40,000 --> 00:03:42,000 >> Και τελικά, το κλειδί με Αντικειμενοστρεφής Προγραμματισμός είναι ότι 68 00:03:42,000 --> 00:03:45,000 οδηγεί σε δεδομένα ενθυλάκωση. 69 00:03:45,000 --> 00:03:48,000 Σε ορισμένες από μας θέτει το πρόβλημα θα μπορούσαμε να έχουμε αυτές τις μεγάλες, παγκόσμιες μεταβλητές 70 00:03:48,000 --> 00:03:51,000 globals και παντού, και αυτό είναι το πώς θα θέλαμε να παρακολουθούμε την κατάσταση. 71 00:03:51,000 --> 00:03:55,000 Με μαθήματα μπορούμε να αρχίσουμε εγκλεισμού πληροφορίες μέσα από ένα αντικείμενο. 72 00:03:55,000 --> 00:03:58,000 Αν έχουμε μία οθόνη στην εφαρμογή μας, εμείς δεν πρέπει πραγματικά να έχουν όλα τα δεδομένα από 73 00:03:58,000 --> 00:04:01,000 άλλη οθόνη στο εσωτερικό του app μας ότι, 74 00:04:01,000 --> 00:04:04,000 και έτσι με εγκλεισμού πράγματα μέσα στην τάξη αυτή οδηγεί στην πραγματικότητα 75 00:04:04,000 --> 00:04:08,000 σε πολύ καλύτερη σχεδίαση κώδικα, και αυτό είναι δυνατό με μερικά από τα πρόσθετα χαρακτηριστικά 76 00:04:08,000 --> 00:04:11,000 του Objective-C. 77 00:04:11,000 --> 00:04:15,000 Προειδοποίηση, η σύνταξη για Objective-C είναι μπανάνες. 78 00:04:15,000 --> 00:04:19,000 Είναι σαν τίποτα δεν έχουμε δει στο παρελθόν, 79 00:04:19,000 --> 00:04:22,000 γι 'αυτό είναι λίγο μια καμπύλη μάθησης συνηθίσει να 80 00:04:22,000 --> 00:04:24,000 Τι στο καλό σημαίνει αυτό; 81 00:04:24,000 --> 00:04:27,000 Αλλά μόλις πάρετε το παρελθόν ότι η αρχική καμπύλη μάθησης είναι πραγματικά, πραγματικά ομαλή 82 00:04:27,000 --> 00:04:29,000 να αρχίσει να γράφει εφαρμογές. 83 00:04:29,000 --> 00:04:33,000 >> Για να δηλώσετε μια τάξη, να πω εδώ είναι η τάξη μου, υπάρχει, 84 00:04:33,000 --> 00:04:35,000 και ίσως εδώ είναι μερικά πράγματα που θα πάω να καθορίσει αργότερα, 85 00:04:35,000 --> 00:04:38,000 Πάω να πω @ interface. 86 00:04:38,000 --> 00:04:41,000 Πάω να πω @ interface. Πάω να δώσει τάξη μου ένα όνομα. 87 00:04:41,000 --> 00:04:43,000 Και τότε αργότερα κάπου αλλού Πάω να πω @ τέλος, 88 00:04:43,000 --> 00:04:46,000 και τα πάντα στο μεταξύ το interface @ @ και το τέλος 89 00:04:46,000 --> 00:04:48,000 θα είναι τάξη μου. 90 00:04:48,000 --> 00:04:51,000 Αυτό πρόκειται να είναι αυτό που είναι μέσα της. Αρχεία ώρα μας. 91 00:04:51,000 --> 00:04:55,000 Ακριβώς όπως και στην C. Αρχεία μας είπε η βασικά εδώ είναι μερικά πράγματα που θα υπάρχουν. 92 00:04:55,000 --> 00:04:57,000 Εγώ δεν σας λέω κατ 'ανάγκη αυτό που κάνουν ακόμα, 93 00:04:57,000 --> 00:04:59,000 αλλά ο compiler πρέπει να γνωρίζει ότι υπάρχουν. 94 00:04:59,000 --> 00:05:04,000 Αργότερα μέσα του. M-αρχεία μας, γιατί μ για Objective-C 95 00:05:04,000 --> 00:05:08,000 είναι όπου είμαστε πραγματικά πρόκειται να ορίσουμε τι κάνουν αυτά τα μαθήματα. 96 00:05:08,000 --> 00:05:11,000 Μοιάζει πολύ με τα αρχεία. Γ μας, προσφέραμε μια εφαρμογή για τις λειτουργίες. 97 00:05:11,000 --> 00:05:15,000 Μέσα. Μ. αρχείο μας θα πάμε να πούμε εδώ είναι ό, τι όλες οι λειτουργίες 98 00:05:15,000 --> 00:05:18,000 στο εσωτερικό της τάξης μου-τι κάνουν όλοι. 99 00:05:18,000 --> 00:05:22,000 Και τέλος, μέσα από ένα struct θα μπορούσαμε να πούμε μέσα από τις αγκύλες 100 00:05:22,000 --> 00:05:25,000 int n ή κόμβο * επόμενο, 101 00:05:25,000 --> 00:05:28,000 και σε Objective-C θα πάμε να χρησιμοποιούν τη λέξη-κλειδί @ ιδιοκτησίας, 102 00:05:28,000 --> 00:05:31,000 και αυτό είναι ό, τι πρόκειται να καθορίσει τις ιδιότητες, 103 00:05:31,000 --> 00:05:36,000 ή τα μη-λειτουργίες που είναι ένα τμήμα των τάξεων μου. 104 00:05:36,000 --> 00:05:40,000 >> Κλήση λειτουργίες σε Objective-C είναι επίσης μπανάνες. 105 00:05:40,000 --> 00:05:43,000 Όταν συναρτήσεις που έχουν δηλωθεί σε C είπαμε κάτι σαν int foo 106 00:05:43,000 --> 00:05:46,000 και ανοιχτή παρένθεση και στη συνέχεια έδωσε μια λίστα με επιχειρήματα. 107 00:05:46,000 --> 00:05:51,000 Αυτό είναι ό, τι δηλώνοντας μεθόδους ή λειτουργίες μοιάζει σε Objective-C. 108 00:05:51,000 --> 00:05:54,000 Αν θέλω να κηρύξει μια λειτουργία ή μια μέθοδο 109 00:05:54,000 --> 00:05:58,000 όπου λέω μέθοδος είναι πραγματικά ακριβώς μια λειτουργία που είναι ένα μέλος μιας κατηγορίας, 110 00:05:58,000 --> 00:06:01,000 έτσι το είδος των εναλλάξιμων, αλλά δεν είναι πραγματικά, 111 00:06:01,000 --> 00:06:03,000 τόσο στο εσωτερικό της μεθόδου μου, θέλω να δημιουργήσω μια νέα μέθοδο. 112 00:06:03,000 --> 00:06:06,000 Είναι πρόκειται να επιστρέψει τίποτα, γι 'αυτό πρόκειται να είναι του τύπου άκυρη. 113 00:06:06,000 --> 00:06:08,000 Αυτός είναι ο τύπος επιστροφής της λειτουργίας μου. 114 00:06:08,000 --> 00:06:11,000 Τώρα έχουμε παρενθέσεις εδώ γιατί-δεν ξέρω. 115 00:06:11,000 --> 00:06:14,000 Στη συνέχεια πρόκειται να είναι το όνομα της συνάρτησης μου, 116 00:06:14,000 --> 00:06:17,000 και τελικά έχουμε ένα ερωτηματικό όπως ακριβώς είχαμε στο C. 117 00:06:17,000 --> 00:06:19,000 Τι είναι νέο εδώ είναι αυτός ο τύπος εδώ. 118 00:06:19,000 --> 00:06:22,000 Αυτή η παύλα είναι πραγματικά απαραίτητο, και ό, τι αυτό λέει είναι ότι 119 00:06:22,000 --> 00:06:26,000 η μέθοδος αυτή εδώ πρέπει να καλείται σε ένα παράδειγμα μιας κλάσης. 120 00:06:26,000 --> 00:06:29,000 >> Αφού δήλωσε structs μας ίσως πει κάτι σαν 121 00:06:29,000 --> 00:06:32,000 struct κόμβος n, και ότι στην πραγματικότητα δημιουργήθηκε 122 00:06:32,000 --> 00:06:35,000 ή instantiated ένα από αυτά τα structs ώστε να μπορώ να πραγματικά να αρχίσει να εργάζεται 123 00:06:35,000 --> 00:06:38,000 με ό, τι είναι μέσα από αυτό, έτσι ώστε αυτή η παύλα σημαίνει ότι πρέπει να 124 00:06:38,000 --> 00:06:41,000 υπόσταση της κλάσης όπως ακριβώς instantiated ότι struct 125 00:06:41,000 --> 00:06:43,000 για να μπορέσουμε να καλέσετε τη μέθοδο αυτή σε αυτό. 126 00:06:43,000 --> 00:06:46,000 Αν θέλετε να ξεκινήσετε την προσθήκη επιχειρήματα για τις μεθόδους μου 127 00:06:46,000 --> 00:06:48,000 αυτό γίνεται ακόμα πιο μπανάνες. 128 00:06:48,000 --> 00:06:50,000 Εδώ είναι το όνομά μου μέθοδο. 129 00:06:50,000 --> 00:06:53,000 Στη συνέχεια, Πάω να έχουν μια άνω και κάτω τελεία, και μετά από αυτή την άνω και κάτω τελεία που λέει εδώ έρχεται κάποια επιχειρήματα. 130 00:06:53,000 --> 00:06:56,000 Αυτή η μέθοδος παίρνει ένα επιχείρημα. 131 00:06:56,000 --> 00:06:59,000 Ο τύπος της επιχειρηματολογίας της είναι int, και το όνομα του επιχειρήματος 132 00:06:59,000 --> 00:07:03,000 ή η μεταβλητή που Πάω να αρχίσετε να χρησιμοποιείτε το εσωτερικό της μεθόδου που ονομάζεται i. 133 00:07:03,000 --> 00:07:05,000 Και πάλι, αυτό είναι η μέθοδος. Παίρνει ένα επιχείρημα. 134 00:07:05,000 --> 00:07:10,000 >> Αν θέλετε να ξεκινήσετε την προσθήκη περισσότερων επιχειρήματα που παίρνει περισσότερο τις μπανάνες 135 00:07:10,000 --> 00:07:13,000 δεδομένου ότι έχουμε αυτό που λέει παχέος εντέρου εδώ έρχεται κατάλογος των επιχειρημάτων μου. 136 00:07:13,000 --> 00:07:15,000 Το πρώτο επιχείρημα είναι ένας ακέραιος. 137 00:07:15,000 --> 00:07:17,000 Τώρα, αυτό το δεύτερο επιχείρημα είναι ενδιαφέρουσα. 138 00:07:17,000 --> 00:07:20,000 Η μεταβλητή που Πάω να χρησιμοποιούν μέσα από τη λειτουργία μου 139 00:07:20,000 --> 00:07:23,000 στ ονομάζεται, ώστε μέσα από τη λειτουργία μου, θα μπορούσα να πω 140 00:07:23,000 --> 00:07:25,000 f + = 1 ή κάτι τέτοιο. 141 00:07:25,000 --> 00:07:30,000 Αυτό το πράγμα εδώ είναι βασικά ένα κλειδί για το όρισμα ή παράμετρος. 142 00:07:30,000 --> 00:07:34,000 Ακριβώς όπως είχαμε βασικά ζεύγη αξία και κάτι σαν JSON ή associative arrays 143 00:07:34,000 --> 00:07:37,000 Objective-C πήρε την απόφαση να πω, εντάξει, απλά έτσι ώστε να είναι πραγματικά σαφές 144 00:07:37,000 --> 00:07:39,000 όταν καλείτε μια μέθοδο τι είναι όλες αυτές οι παράμετροι 145 00:07:39,000 --> 00:07:41,000 Είμαι πραγματικά πρόκειται να τα αναφέρουμε όλα. 146 00:07:41,000 --> 00:07:45,000 Όταν καλείτε μια μέθοδο, θα πει πραγματικά andFloat, 147 00:07:45,000 --> 00:07:47,000 και στη συνέχεια θα το περάσει μέσα 148 00:07:47,000 --> 00:07:50,000 >> Ενδιαφέρον, αυτό δεν είναι το όνομα, αλλά όλες οι άλλες παράμετροι είναι, 149 00:07:50,000 --> 00:07:53,000 οπότε αν είχαμε ένα 3ο επιχείρημα θα μπορούσα να πω andFloat 150 00:07:53,000 --> 00:07:56,000 και ένα άλλο πλωτήρα και ούτω καθεξής. 151 00:07:56,000 --> 00:08:01,000 Όταν καλώ αυτές τις μεθόδους είναι μπανανών φυσικά, 152 00:08:01,000 --> 00:08:04,000 οπότε αν έχω ένα αντικείμενο, και θα ορίζεται μια μέθοδο που ονομάζεται foo, 153 00:08:04,000 --> 00:08:09,000 και θέλω να το ονομάσετε, αντί να πει foo άνοιγμα / κλείσιμο parens 154 00:08:09,000 --> 00:08:11,000 Πάω να ανοίξει ένα στήριγμα. 155 00:08:11,000 --> 00:08:13,000 Εδώ είναι το όνομα της μεθόδου μου. 156 00:08:13,000 --> 00:08:17,000 Πάω να κλείσει το βραχίονα, και αυτό είναι το αντικείμενο είμαι καλώντας τον. 157 00:08:17,000 --> 00:08:20,000 Θυμηθείτε, όλες αυτές οι μέθοδοι υπάρχουν μέσα στην τάξη 158 00:08:20,000 --> 00:08:23,000 επειδή τάξεις μπορούν να έχουν μεθόδους που ορίζονται στο εσωτερικό τους. 159 00:08:23,000 --> 00:08:26,000 >> Εδώ έχω δημιουργήσει αυθαίρετα ένα αντικείμενο κάποιας κλάσης, 160 00:08:26,000 --> 00:08:28,000 και αυτή είναι η σύνταξη για αυτό. 161 00:08:28,000 --> 00:08:31,000 Υπάρχουν 2 βήματα για τη δημιουργία ενός αντικειμένου. 162 00:08:31,000 --> 00:08:34,000 Το πρώτο βήμα είναι να πω ότι θέλουν να διαθέσουν χώρο. 163 00:08:34,000 --> 00:08:37,000 Αυτό είναι το ισοδύναμο του ενός malloc. Δεν έχουμε να πούμε πια malloc. 164 00:08:37,000 --> 00:08:42,000 Θα πέσει το m, έκανε alloc, και αντικατέστησε το. Με γ. M. 165 00:08:42,000 --> 00:08:47,000 Αφού κάτι alloc που πρέπει στη συνέχεια να γίνει η προετοιμασία. 166 00:08:47,000 --> 00:08:49,000 Βασικά όταν δημιουργείτε αντικείμενα που μπορεί να θέλουν να έχουν κάποια λογική 167 00:08:49,000 --> 00:08:53,000 που εκτελεί όταν είστε δημιουργηθεί, έτσι ώστε να μπορεί να περάσει σε ορισμένες προεπιλεγμένες τιμές 168 00:08:53,000 --> 00:08:57,000 ή κάτι τέτοιο, και έτσι αυτή η μέθοδος init είναι αυτό που δημιουργεί πραγματικά το αντικείμενο. 169 00:08:57,000 --> 00:08:59,000 Διαθέτουμε πρώτο διάστημα, όπως ακριβώς κάναμε και στην C, 170 00:08:59,000 --> 00:09:04,000 και στη συνέχεια θα γίνει η προετοιμασία, η οποία μπορεί ή δεν μπορεί να κάνει ένα σωρό. 171 00:09:04,000 --> 00:09:07,000 Στη συνέχεια, γυρίζουμε αυτό το πράγμα σε ένα αντικείμενο o. 172 00:09:07,000 --> 00:09:09,000 Υπάρχει ένα αστέρι εδώ, γιατί αυτό είναι τεχνικά ένα δείκτη, 173 00:09:09,000 --> 00:09:12,000 αλλά μην ανησυχείτε, δεν είναι δείκτες ότι μεγάλη μια διαπραγμάτευση σε Objective-C πια. 174 00:09:12,000 --> 00:09:15,000 >> Τώρα έχουμε instantiated αυτή την κατηγορία ονομάζεται NSObject, 175 00:09:15,000 --> 00:09:19,000 και αυτό είναι μόνο μια τυχαία θέση ότι η Apple έχει. 176 00:09:19,000 --> 00:09:22,000 Έχουμε αρχικοποιείται αυτό, και τώρα έχω ένα παράδειγμα αυτής της κατηγορίας 177 00:09:22,000 --> 00:09:25,000 σε αυτό το αντικείμενο o, έτσι αυτό σημαίνει ότι αν ορίζεται 178 00:09:25,000 --> 00:09:29,000 αυτές οι μέθοδοι θα μπορούσα να τους αποκαλούν έτσι. 179 00:09:29,000 --> 00:09:31,000 Ομοίως, αν ήθελα να καλέσει μια μέθοδο με ένα επιχείρημα, 180 00:09:31,000 --> 00:09:34,000 έτσι αυτή είναι η μέθοδος μπαρ, που παίρνει ένα όρισμα, 181 00:09:34,000 --> 00:09:38,000 και εδώ είναι η baz: qux μέθοδο, έτσι ώστε αυτό διαρκεί 2 επιχειρήματα. 182 00:09:38,000 --> 00:09:44,000 Αυτό καλώντας μια λειτουργία σε αυτό το αντικείμενο o. 183 00:09:44,000 --> 00:09:46,000 Κάντε νόημα; 184 00:09:46,000 --> 00:09:50,000 Η σύνταξη θα πρέπει να έχει νόημα, αλλά κατά κάποιο τρόπο να το συνηθίσεις. 185 00:09:50,000 --> 00:09:54,000 >> Εντάξει, ας μιλήσουμε για μερικά πράγματα που είναι χτισμένα σε Objective-C 186 00:09:54,000 --> 00:09:56,000 οποία δεν ήταν απαραιτήτως χτισμένο σε C. 187 00:09:56,000 --> 00:09:59,000 Στο Γ 'αυτό το είδος της έπρεπε να ασχοληθεί με χορδές, όπως αυτά τα ηλίθια συστοιχίες χαρακτήρα, 188 00:09:59,000 --> 00:10:01,000 και πήρε πραγματικά ενοχλητικό. 189 00:10:01,000 --> 00:10:04,000 Objective-C έχει όλα αυτά που χτίστηκε το για μας, και είναι χτισμένο σε 190 00:10:04,000 --> 00:10:06,000 χρησιμοποιώντας αυτή την κατηγορία ονομάζεται NSString. 191 00:10:06,000 --> 00:10:10,000 Όταν θέλετε να δημιουργήσετε μια NSString έχουμε πιο απόκρυφες σύνταξη. 192 00:10:10,000 --> 00:10:15,000 Αντί να λέει "CS50" λέμε @ "CS50" 193 00:10:15,000 --> 00:10:17,000 και αυτό είναι μόνο η σύνταξη για τη δήλωση των χορδές σε Objective-C. 194 00:10:17,000 --> 00:10:21,000 Αυτό είναι εξαιρετικά εύκολο να ξεχάσουμε, έτσι δεν το κάνουν. 195 00:10:21,000 --> 00:10:24,000 Τώρα, όταν έχω αυτό, αυτό είναι ένα string, αλλά παρατηρήσετε 196 00:10:24,000 --> 00:10:26,000 είναι πραγματικά ακριβώς ένα αντικείμενο. 197 00:10:26,000 --> 00:10:30,000 Είπα NSString, το οποίο σημαίνει ότι instantiated την κατηγορία 198 00:10:30,000 --> 00:10:32,000 που ονομάζεται NSString, που έγραψε κάποιος άλλος για μένα, 199 00:10:32,000 --> 00:10:35,000 και ήταν πολύ ωραία γι 'αυτό, και έτσι τώρα 200 00:10:35,000 --> 00:10:37,000 Μπορώ να αρχίσει καλώντας τις μεθόδους σε αυτό. 201 00:10:37,000 --> 00:10:40,000 Αν καλέσετε το μήκος μέθοδος για αυτό το αντικείμενο s 202 00:10:40,000 --> 00:10:43,000 πρόκειται να επιστρέψει σε μένα το μήκος του string. 203 00:10:43,000 --> 00:10:45,000 Αυτό είναι ακριβώς όπως strlen σε C. 204 00:10:45,000 --> 00:10:47,000 Αυτό θα επιστρέψει 4. 205 00:10:47,000 --> 00:10:51,000 >> Ομοίως, μια άλλη μέθοδος που μπορεί να θέλει να νοιάζονται για αυτό είναι characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Αυτή είναι μια μέθοδος που λέει σε αυτό το string s 207 00:10:54,000 --> 00:10:57,000 Θέλω να πάρετε το χαρακτήρα μηδενική, 208 00:10:57,000 --> 00:10:59,000 και έτσι αυτό θα επιστρέψει σε μένα το χαρακτήρα c, 209 00:10:59,000 --> 00:11:02,000 και υπάρχει ένα σωρό περισσότερες από αυτές τις μεθόδους που μπορείτε να το Google πραγματικά εύκολα. 210 00:11:02,000 --> 00:11:07,000 Τεκμηρίωση της Apple είναι μεγάλη, και θα ρίξουμε μια ματιά σε αυτό σε λίγο. 211 00:11:07,000 --> 00:11:09,000 Αυτοί είναι οι χορδές. 212 00:11:09,000 --> 00:11:11,000 Έχουμε επίσης μεταβλητό μέγεθος συστοιχίες χτισμένο in 213 00:11:11,000 --> 00:11:13,000 Να θυμάστε, όταν σε C δηλώσαμε μια σειρά 214 00:11:13,000 --> 00:11:16,000 είχαμε να πούμε ότι έχουμε 5 στοιχεία, τέλος της ιστορίας. 215 00:11:16,000 --> 00:11:18,000 Όταν φτάσαμε στο JavaScript και PHP θα μπορούσαμε να αρχίσουμε 216 00:11:18,000 --> 00:11:20,000 να κάνει τα πράγματα όπως την προσθήκη στοιχείων ή κινούμενα στοιχεία. 217 00:11:20,000 --> 00:11:22,000 Μπορούμε να κάνουμε το ίδιο σε Objective-C. 218 00:11:22,000 --> 00:11:26,000 Αντί να δημιουργήσει μια σειρά με τον κανονικό τρόπο Γ 219 00:11:26,000 --> 00:11:30,000 έχουμε και πάλι μια άλλη κατηγορία που ονομάζεται NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Υπάρχει επίσης NSArray, 221 00:11:33,000 --> 00:11:35,000 και αυτό πρόκειται να ενθυλακώσει κάποια βασικά συστοιχία. 222 00:11:35,000 --> 00:11:38,000 Αυτό λέει ότι το πρώτο πράγμα που θέλω να κάνω είναι ότι θέλουν να διαθέσουν 223 00:11:38,000 --> 00:11:41,000 χώρος για μια νέα σειρά, και μετά μπορώ να διαθέσουν 224 00:11:41,000 --> 00:11:43,000 Στη συνέχεια πρέπει να γίνει η προετοιμασία. 225 00:11:43,000 --> 00:11:45,000 Και πάλι, καλώντας μόνο αυτά τα 2 μεθόδους. 226 00:11:45,000 --> 00:11:48,000 Τώρα, αυτό σημαίνει ότι το εσωτερικό αυτού του αντικειμένου μιας 227 00:11:48,000 --> 00:11:50,000 Έχω μια κενή σειρά κάθεται εκεί. 228 00:11:50,000 --> 00:11:54,000 Αν θέλω να προσθέσω κάτι σε αυτό το φάσμα, μπορώ να καλέσω το addObject μέθοδο. 229 00:11:54,000 --> 00:11:59,000 Θέλω να προσθέσω ένα αντικείμενο στον πίνακα μιας και θέλω να προσθέσω τη σειρά CS50. 230 00:11:59,000 --> 00:12:02,000 Αν ήθελα να αφαιρέσετε αντιστρόφως ότι μπορώ να πω ότι θέλω να 231 00:12:02,000 --> 00:12:09,000 αφαιρέστε το αντικείμενο στην πρώτη θέση στη συστοιχία ή να προβάλλουν ένα. 232 00:12:09,000 --> 00:12:11,000 >> Κάντε νόημα; 233 00:12:11,000 --> 00:12:14,000 Εντάξει, έχετε το είδος της συνηθίσουν σε αυτό το τετράγωνο πράγμα βραχίονα. 234 00:12:14,000 --> 00:12:18,000 Με την ευκαιρία, μέσα από πολλές βιβλιοθήκες της Apple θα δείτε αυτό το NS. 235 00:12:18,000 --> 00:12:21,000 Το NS σημαίνει πραγματικά για το επόμενο βήμα, που ήταν μία από τις εταιρείες Steve Jobs πρώτη, 236 00:12:21,000 --> 00:12:24,000 και αυτό είναι πραγματικά όπου άρχισε να γράφει ένα μεγάλο μέρος της κώδικα 237 00:12:24,000 --> 00:12:27,000 όπως το είδος της βάσης για Mac OS X και όλα τα άλλα πράγματα, 238 00:12:27,000 --> 00:12:32,000 και έτσι αυτή NS είναι το είδος του αυτό το ωραίο κληρονομιά φωνάζει σε μια από τις πρώτες εταιρείες 239 00:12:32,000 --> 00:12:34,000 πίσω όταν η Apple για πρώτη φορά από την έναρξη. 240 00:12:34,000 --> 00:12:36,000 Είναι παντού. 241 00:12:36,000 --> 00:12:41,000 Ας ρίξουμε μια ματιά σε μια πιο ολιστική παράδειγμα Objective-C. 242 00:12:41,000 --> 00:12:44,000 Εδώ είμαι μέσα του Xcode. 243 00:12:44,000 --> 00:12:47,000 Για να φτάσετε εδώ, εγώ κατέβασα το πρώτο Xcode από το App Store, 244 00:12:47,000 --> 00:12:50,000 άνοιξε και, στη συνέχεια πήγα μέχρι εδώ στο αρχείο, 245 00:12:50,000 --> 00:12:54,000 εδώ σε νέα, και στη συνέχεια του έργου. 246 00:12:54,000 --> 00:12:57,000 Αφού κάνω ότι έχω όλες αυτές τις επιλογές για το τι θέλω να δημιουργήσω, 247 00:12:57,000 --> 00:12:59,000 και έτσι θα ρίξουμε μια ματιά σε αυτές τις επιλογές αργότερα, 248 00:12:59,000 --> 00:13:03,000 αλλά ακριβώς για αυτό το παράδειγμα, επειδή δεν είμαστε στην πραγματικότητα πρόκειται να έχει εφαρμογή ακόμα, 249 00:13:03,000 --> 00:13:06,000 Ήρθα εδώ κάτω, και είπα Εργαλείο γραμμής εντολών, 250 00:13:06,000 --> 00:13:09,000 και αυτό είναι μια εφαρμογή που θα μπορούσε να τρέξει στη γραμμή εντολών 251 00:13:09,000 --> 00:13:12,000 ακριβώς όπως έχουμε ήδη τρέχει από την C. 252 00:13:12,000 --> 00:13:16,000 Αυτό είναι το πώς δημιουργήθηκε αυτό το έργο, και έτσι τώρα είμαι εδώ, 253 00:13:16,000 --> 00:13:20,000 οπότε ας πρώτη ματιά σε αυτό το αρχείο, και αυτό θα πρέπει να εξετάσουμε πολύ εξοικειωμένοι. 254 00:13:20,000 --> 00:13:24,000 Έχω ένα όνομα int. Υπάρχει argc φίλος μου, άλλα φίλε μου argv. 255 00:13:24,000 --> 00:13:30,000 Και έτσι μπορούμε να δούμε ότι αυτό είναι το σημείο εισόδου για την πρώτη αίτησή μου Objective-C. 256 00:13:30,000 --> 00:13:32,000 Εδώ μπορούμε να αγνοήσουμε αυτό για τώρα. 257 00:13:32,000 --> 00:13:35,000 Αυτό είναι βασικά μερικά πράγματα διαχείριση μνήμης που θα σας δεν είναι πραγματικά 258 00:13:35,000 --> 00:13:37,000 ποτέ να ανησυχούν. 259 00:13:37,000 --> 00:13:39,000 >> Ας ρίξουμε μια ματιά σε αυτό το πρώτο μπλοκ εδώ. 260 00:13:39,000 --> 00:13:46,000 Η πρώτη γραμμή, αν πω Φοιτητής alice * = [[alloc Φοιτητών] init] Τι είναι αυτό κάνει; 261 00:13:46,000 --> 00:13:50,000 Η πρώτη φοιτητής εδώ, αυτό είναι πιθανώς μια τάξη. 262 00:13:50,000 --> 00:13:54,000 Αυτό δεν είναι μια κατηγορία που η Apple έγραψε, αλλά είναι μια κατηγορία που έγραψα. 263 00:13:54,000 --> 00:13:57,000 Το πρώτο πράγμα που θέλω να κάνω είναι ότι θέλουν να διαθέσουν χώρο για ένα νέο φοιτητή, 264 00:13:57,000 --> 00:14:00,000 και στη συνέχεια θέλω να προετοιμαστεί, έτσι αυτό μου δίνει πίσω 265 00:14:00,000 --> 00:14:05,000 αυτό το νέο αντικείμενο φοιτητής, και είμαι αποθήκευση αυτό σε μια μεταβλητή που ονομάζεται Alice. 266 00:14:05,000 --> 00:14:07,000 Πού κατηγορία ότι προέρχονται από; 267 00:14:07,000 --> 00:14:12,000 Λοιπόν, εδώ στην αριστερή πλευρά όλα αυτά είναι διαφορετικά από τα αρχεία μέσα από το έργο μου. 268 00:14:12,000 --> 00:14:16,000 Μπορούμε να δούμε εδώ έχω ένα Student.h και Student.m. 269 00:14:16,000 --> 00:14:20,000 Το αρχείο. Ώρα, να θυμάστε, όπου είναι Δηλώνω όλα τα πράγματα 270 00:14:20,000 --> 00:14:22,000 που θα υπάρχουν μέσα στην τάξη. 271 00:14:22,000 --> 00:14:25,000 >> Ας ρίξουμε μια ματιά σε αυτό. 272 00:14:25,000 --> 00:14:29,000 Εντάξει, εδώ έχουμε αυτό το @ interface, και αυτό λέει ότι εδώ έρχεται 273 00:14:29,000 --> 00:14:33,000 οι δηλώσεις του κάθε τι που θα υπάρχουν μέσα στην τάξη μου. 274 00:14:33,000 --> 00:14:36,000 Στη συνέχεια, έχω μια άνω και κάτω τελεία. Στη συνέχεια, έχω αυτό το πράγμα NSObject. 275 00:14:36,000 --> 00:14:40,000 Αυτό σημαίνει ότι η άνω και κάτω τελεία λίγο κληρονομιά συζητούσαμε λίγο νωρίτερα. 276 00:14:40,000 --> 00:14:43,000 Αυτό τα λέει όλα μια NSObject μπορεί να κάνει 277 00:14:43,000 --> 00:14:46,000 όπου NSObject είναι η τάξη αυτή που γράφτηκε από κάποιον άλλο, 278 00:14:46,000 --> 00:14:50,000 ό, τι αυτό μπορεί να κάνει NSObject Θέλω να είμαι σε θέση να το κάνουμε αυτό. 279 00:14:50,000 --> 00:14:54,000 Με λέγοντας: NSObject αυτό σημαίνει ότι εγώ βασικά 280 00:14:54,000 --> 00:14:58,000 κληρονόμησε το σύνολο της λειτουργικότητας μιας άλλης τάξης. 281 00:14:58,000 --> 00:15:02,000 Αυτό πραγματικά μου έδωσε ένα σωρό διαφορετικές μεθόδους και ιδιότητες που μπορώ να χρησιμοποιήσω. 282 00:15:02,000 --> 00:15:05,000 Εδώ κάτω, είμαι δημιουργία 2 ακίνητα. 283 00:15:05,000 --> 00:15:08,000 That σημαίνει μαθητής μου, αν αυτό ήταν ένα struct, αυτά θα είναι τα 2 πράγματα 284 00:15:08,000 --> 00:15:11,000 μέσα από struct μου, έτσι ώστε κάθε μαθητής έχει ένα όνομα 285 00:15:11,000 --> 00:15:14,000 αυτό είναι ένα string, και ένας φοιτητής έχει επίσης ένα βαθμό, 286 00:15:14,000 --> 00:15:17,000 το οποίο είναι ένα int. 287 00:15:17,000 --> 00:15:23,000 >> Τέλος, εδώ κάτω Πάω να δημιουργήσει μια μέθοδο για το μαθητή μου. 288 00:15:23,000 --> 00:15:26,000 Κάλεσα τη μέθοδο μου, initWithName, και παίρνει ένα επιχείρημα, 289 00:15:26,000 --> 00:15:31,000 και ότι το επιχείρημα αυτό είναι ένα string, και κάλεσα το όνομα. 290 00:15:31,000 --> 00:15:35,000 Τώρα, ας ρίξουμε μια ματιά στο πώς θα υλοποιηθεί στην πραγματικότητα αυτή την κατηγορία. 291 00:15:35,000 --> 00:15:38,000 Εδώ, τώρα είμαι στο εσωτερικό του. File m μου, 292 00:15:38,000 --> 00:15:40,000 m για την εφαρμογή, υποθέτω. 293 00:15:40,000 --> 00:15:44,000 Έχω την εφαρμογή μου, τέλος μου, και εδώ είναι όπου είμαι πραγματικά τον καθορισμό 294 00:15:44,000 --> 00:15:47,000 initWithName τι κάνει. 295 00:15:47,000 --> 00:15:50,000 Έχω initWithName, το όνομα της παραμέτρου μου, και στη συνέχεια, αυτό το 296 00:15:50,000 --> 00:15:53,000 είναι όπου είμαι πραγματικά δημιουργώντας ένα μαθητή, 297 00:15:53,000 --> 00:15:56,000 και έτσι αυτό είναι λίγο αινιγματικό, αλλά αυτό είναι το είδος του boilerplate 298 00:15:56,000 --> 00:15:58,000 που θέλετε να συμπεριλάβετε σε κατασκευαστές σας. 299 00:15:58,000 --> 00:16:02,000 Αυτή η λειτουργία αρχικοποίησης εδώ, initWithName, είναι ένας τύπος του κατασκευαστή. 300 00:16:02,000 --> 00:16:05,000 Είσαι κατασκευή ουσιαστικά ένα νέο αντικείμενο φοιτητής 301 00:16:05,000 --> 00:16:07,000 και την αποστολή ίσως κάποια στοιχεία στο εσωτερικό του. 302 00:16:07,000 --> 00:16:11,000 Το πρώτο πράγμα που θέλω να κάνω είναι που θέλω να καλέσω init σε αυτό το σούπερ πράγμα. 303 00:16:11,000 --> 00:16:15,000 >> Να θυμάστε ότι όταν είπα πάλι εδώ στο αρχείο. H 304 00:16:15,000 --> 00:16:21,000 που πάντα ένα NSObject έχει ένας μαθητής έχει επίσης. 305 00:16:21,000 --> 00:16:24,000 Αυτό σημαίνει ότι όταν μπορώ να δημιουργήσω ένα μαθητή αυτό που επίσης χρειάζεται να κάνετε είναι 306 00:16:24,000 --> 00:16:28,000 βεβαιωθείτε ότι η NSObject ότι είμαι κληρονομεί όλα τα δεδομένα από 307 00:16:28,000 --> 00:16:32,000 Επίσης αρχικοποιηθεί σωστά. 308 00:16:32,000 --> 00:16:36,000 Αυτό που πρέπει να πω είναι αυτό το σούπερ είναι πραγματικά πρόκειται να αναφερθώ στην τάξη μητρικής 309 00:16:36,000 --> 00:16:39,000 ότι είμαι κληρονομεί από, έτσι θέλω να είμαι σίγουρη ότι η προετοιμασία 310 00:16:39,000 --> 00:16:43,000 ό, τι είμαι ανάλογα με πριν αρχίσω να προσπαθώ να το χρησιμοποιήσετε. 311 00:16:43,000 --> 00:16:46,000 Στη συνέχεια, αν προετοιμαστεί σωστά ότι αυτό είναι ακριβώς σαν να λέμε αν malloc 312 00:16:46,000 --> 00:16:50,000 δεν επιστρέψει null τότε μπορώ να αρχίσουν να θέτουν ορισμένες ιδιότητες. 313 00:16:50,000 --> 00:16:54,000 >> Σε JavaScript και PHP είχαμε αυτό το κλειδί που ονομάζεται αυτό, 314 00:16:54,000 --> 00:16:58,000 και αυτό που αναφέρεται στο τρέχον στιγμιότυπο μιας κλάσης. 315 00:16:58,000 --> 00:17:00,000 Στις περιφέρειες του στόχου-C που ονομάζουμε αυτή την αυτο. 316 00:17:00,000 --> 00:17:04,000 Όταν λέω self.name, αυτό σημαίνει ότι το αντικείμενο 317 00:17:04,000 --> 00:17:07,000 Απλά δημιουργείται όταν είπα alloc φοιτητής init, 318 00:17:07,000 --> 00:17:09,000 που πρόκειται να μου δώσει πίσω ένα αντικείμενο. 319 00:17:09,000 --> 00:17:12,000 Αυτό σημαίνει ότι μπορώ θέλετε να ορίσετε το όνομα του αντικειμένου 320 00:17:12,000 --> 00:17:15,000 σε ό, τι εγώ μόλις περάσει μέσα 321 00:17:15,000 --> 00:17:18,000 Ακριβώς όπως και στην C, έχουμε πρόσβαση των μελών με αυτό τελεία, 322 00:17:18,000 --> 00:17:21,000 έτσι self.name ανέφερε ότι το όνομα του αντικειμένου των φοιτητών 323 00:17:21,000 --> 00:17:24,000 τώρα θα είναι ό, τι ακριβώς περάσει μέσα 324 00:17:24,000 --> 00:17:28,000 Και έτσι τελικά, μπορώ να το επιστρέψει, ώστε να πάρω κάτι πίσω στην πραγματικότητα. 325 00:17:28,000 --> 00:17:30,000 >> Ερωτήσεις; 326 00:17:30,000 --> 00:17:34,000 Εντάξει, έτσι αυτή η αυτο = σούπερ init, 327 00:17:34,000 --> 00:17:37,000 αν δεν καταλαβαίνετε εντελώς τα πράγματα κληρονομιά μην ανησυχείτε. 328 00:17:37,000 --> 00:17:40,000 Απλά ξέρω ότι αν ποτέ θέλετε να φτιάξετε το δικό σας init μέθοδο μόνο 329 00:17:40,000 --> 00:17:42,000 το κάνουμε αυτό, και θα είναι καλό να πάει. 330 00:17:42,000 --> 00:17:44,000 Ναι. >> [Φοιτητικό] Τι σημαίνει αν αυτο; 331 00:17:44,000 --> 00:17:49,000 Αυτό σημαίνει ότι όταν malloc κάτι που πάντα ελέγχεται αν ήταν ίσο με το μηδέν, 332 00:17:49,000 --> 00:17:51,000 και αν ήταν μηδενική, τότε βγήκε. 333 00:17:51,000 --> 00:17:55,000 Αυτό είναι το ίδιο πράγμα, γιατί αν αυτό επιστρέφει null, τότε πρόκειται πιθανώς να seg σφάλμα 334 00:17:55,000 --> 00:17:57,000 αν αρχίσουμε να προσπαθούμε να το χειραγωγήσουν. 335 00:17:57,000 --> 00:18:01,000 Αυτός είναι ο φοιτητής τάξη μας. 336 00:18:01,000 --> 00:18:03,000 Αυτό σημαίνει ότι μπορούμε να προετοιμάσει τους μαθητές μας σε έναν από τους δύο τρόπους. 337 00:18:03,000 --> 00:18:08,000 Αν πω alloc φοιτητής init δεν είμαι χρησιμοποιώντας τη μέθοδο που μόλις έγραψε, 338 00:18:08,000 --> 00:18:11,000 και αντ 'αυτού μπορώ να πω απλά alice.name, 339 00:18:11,000 --> 00:18:14,000 και τώρα είμαι πρόκειται να θέσει το όνομα ιδιοκτησίας. 340 00:18:14,000 --> 00:18:17,000 >> Ομοίως, αν θέλω να χρησιμοποιήσω αυτή τη μέθοδο initWithName 341 00:18:17,000 --> 00:18:20,000 Μπορώ να πω απλά alloc, και στη συνέχεια, αντί να πει init 342 00:18:20,000 --> 00:18:24,000 Πάω να καλέσετε τη μέθοδο που μόλις δημιουργήσατε, και Πάω να περάσει στο Bob. 343 00:18:24,000 --> 00:18:30,000 Σε αυτό το σημείο, αυτό το αντικείμενο Bob έχει ένα όνομα ίσο με το βαρίδι. 344 00:18:30,000 --> 00:18:35,000 Εντάξει, εδώ κάτω είμαι με τη χρήση αυτή NSMutableArray ότι είδαμε νωρίτερα. 345 00:18:35,000 --> 00:18:38,000 Είμαι κατανομή space.Then Είμαι αρχικοποίηση μια νέα σειρά. 346 00:18:38,000 --> 00:18:40,000 Πάω να προσθέσω 2 πράγματα σε αυτό. 347 00:18:40,000 --> 00:18:43,000 Αυτή η σειρά έχει τώρα αντικείμενα φοιτητής. 348 00:18:43,000 --> 00:18:46,000 Παρατηρήστε ότι πουθενά δεν έχω να πω αυτό είναι μια σειρά από φοιτητές. 349 00:18:46,000 --> 00:18:48,000 Είπα ότι είναι μια σειρά, περίοδος. 350 00:18:48,000 --> 00:18:50,000 Τότε μπορώ να βάλω ό, τι στο εσωτερικό του αυτό που θέλω. 351 00:18:50,000 --> 00:18:52,000 Εδώ έχω 2 αντικείμενα. 352 00:18:52,000 --> 00:18:56,000 >> Τέλος, έχω ένα άλλο αντικείμενο, εδώ το TF. 353 00:18:56,000 --> 00:18:59,000 Πάνω εδώ σε TF.h βασικά το ίδιο πράγμα. 354 00:18:59,000 --> 00:19:01,000 Είμαι κληρονομεί από NSObject, και από τον τρόπο, 355 00:19:01,000 --> 00:19:03,000 όταν δημιουργείτε τάξεις αυτό όλα γίνονται για σένα, 356 00:19:03,000 --> 00:19:06,000 αυτό το είδος της διασύνδεσης στερεότυπο. 357 00:19:06,000 --> 00:19:08,000 Έχει μια ιδιότητα των φοιτητών. 358 00:19:08,000 --> 00:19:15,000 Έχω ένα ζευγάρι εδώ μεθόδους που δεν κάνουν πραγματικά ένα πάρα πολύ, 359 00:19:15,000 --> 00:19:18,000 και έτσι αυτό σημαίνει ότι αφού μπορώ να δημιουργήσω αυτό το αντικείμενο TF 360 00:19:18,000 --> 00:19:23,000 Μπορώ να καλέσετε αυτό το βαθμό σε αυτή τη μέθοδο σαν αυτό. 361 00:19:23,000 --> 00:19:26,000 Οποιεσδήποτε ερωτήσεις σχετικά με τη σύνταξη Objective-C πριν αρχίσει να κινείται σε λίγο περισσότερο 362 00:19:26,000 --> 00:19:30,000 ενδιαφέροντα πράγματα ανάπτυξη εφαρμογών; 363 00:19:30,000 --> 00:19:34,000 >> Εντάξει, οπότε ας κάνουν πραγματικά ένα iPhone app. 364 00:19:34,000 --> 00:19:39,000 Οι τάξεις πυρήνα που θα χρησιμοποιείτε στο εσωτερικό του iPhone app σας ονομάζεται ελεγκτές άποψη, 365 00:19:39,000 --> 00:19:42,000 και έναν ελεγκτή άποψη αποτελεί ουσιαστικά μια ενιαία οθόνη 366 00:19:42,000 --> 00:19:46,000 μέσα από την εφαρμογή σας, οπότε αν είμαι στο app μουσική, για παράδειγμα, 367 00:19:46,000 --> 00:19:50,000 έναν ελεγκτή άποψη θα μπορούσε να αποτελέσει την άποψη στην οποία μπορώ να δω όλα τα τραγούδια στο iPhone μου. 368 00:19:50,000 --> 00:19:53,000 Μια άλλη άποψη ελεγκτής θα μπορούσε να είναι όταν κάνω κλικ σε ένα τραγούδι και να αρχίσετε να παίζετε το 369 00:19:53,000 --> 00:19:55,000 ή όπως είμαι γεώτρηση κάτω στο καλλιτεχνών. 370 00:19:55,000 --> 00:19:59,000 Κάθε μία από αυτές τις διαφορετικές οθόνες θα μπορούσε να παρασταθεί ως μια διαφορετική άποψη ελεγκτή, 371 00:19:59,000 --> 00:20:04,000 και έναν ελεγκτή θέα είναι πραγματικά ακριβώς μια κατηγορία που λέει πως αυτή η οθόνη λειτουργεί. 372 00:20:04,000 --> 00:20:07,000 Τα πράγματα μέσα από έναν ελεγκτή άποψη, θα πάμε να έχουν ιδιότητες, 373 00:20:07,000 --> 00:20:10,000 έτσι τα πράγματα, όπως ένα κουμπί πρόκειται να είναι μια ιδιότητα του ελεγκτή την άποψή μας. 374 00:20:10,000 --> 00:20:13,000 >> Είμαστε, επίσης, πρόκειται να έχουμε τις μεθόδους, και αυτά είναι βασικά χειρισμού συμβάντων. 375 00:20:13,000 --> 00:20:16,000 Αυτή η μέθοδος λέει ότι όταν πατήσετε το κουμπί 376 00:20:16,000 --> 00:20:19,000 Θέλω να κάνω κάτι, και, τέλος, και πάλι, 377 00:20:19,000 --> 00:20:24,000 θα πάμε να χρησιμοποιούν αυτή την αυτο-κλειδί για να έχουν πρόσβαση στο τρέχον στιγμιότυπο. 378 00:20:24,000 --> 00:20:29,000 Για να οικοδομήσουμε διασυνδέσεις στο iOS είναι πραγματικά πολύ, πολύ εύκολο. 379 00:20:29,000 --> 00:20:32,000 Έχουν αυτό το ωραίο drag and drop interface που ονομάζεται Interface Builder, 380 00:20:32,000 --> 00:20:37,000 και οι 2 βασικές έννοιες σύρμα ότι μέχρι σας Objective-C έως Interface Builder 381 00:20:37,000 --> 00:20:40,000 είναι IBOutlet και IBAction. 382 00:20:40,000 --> 00:20:44,000 Μια IBOutlet λέει απλά ότι αν δηλώσει ένα ακίνητο που είναι ένα κουμπί, 383 00:20:44,000 --> 00:20:47,000 και θέλετε να το συνδέσετε με κάτι σε πραγματικό περιβάλλον εργασίας σας, 384 00:20:47,000 --> 00:20:49,000 θα πάμε να πούμε ότι είναι μια διέξοδος. 385 00:20:49,000 --> 00:20:51,000 Ομοίως, αν θέλετε να αντιπροσωπεύουν ένα πρόγραμμα χειρισμού συμβάντων 386 00:20:51,000 --> 00:20:54,000 τότε θα πάμε να πούμε ότι είναι μια ενέργεια. 387 00:20:54,000 --> 00:20:57,000 >> Για πραγματικά σύρμα μέχρι αυτή την γραφική αναπαράσταση 388 00:20:57,000 --> 00:21:00,000 και ο κωδικός σας είναι πραγματικά, πραγματικά απλή. 389 00:21:00,000 --> 00:21:03,000 Αν θέλετε να επισυνάψετε μια IBOutlet, το μόνο που έχετε να κάνετε είναι να ελέγχετε το κλικ, 390 00:21:03,000 --> 00:21:05,000 και θα δούμε ένα παράδειγμα αυτής της πραγματικά γρήγορα. 391 00:21:05,000 --> 00:21:07,000 Μπορείτε να ελέγξετε κάντε κλικ εκεί που λέει View Controller. 392 00:21:07,000 --> 00:21:09,000 Θα πάμε για να σύρετε στο περιβάλλον, ή αντιστρόφως, 393 00:21:09,000 --> 00:21:13,000 αν θέλετε να συνδέσετε ένα πρόγραμμα χειρισμού συμβάντων που πρόκειται να σύρετε από τη διεπαφή 394 00:21:13,000 --> 00:21:15,000 στην άλλη κατεύθυνση. 395 00:21:15,000 --> 00:21:20,000 Ας ρίξουμε μια ματιά σε ένα πολύ απλό παράδειγμα iOS. 396 00:21:20,000 --> 00:21:23,000 >> Ας δημιουργήσουμε ένα νέο έργο. 397 00:21:23,000 --> 00:21:25,000 Πάω να έρθει εδώ για να Εφαρμογής, 398 00:21:25,000 --> 00:21:28,000 και Πάω να κάνετε κλικ Ενιαίας Αίτησης View. 399 00:21:28,000 --> 00:21:31,000 Πάω να κάντε κλικ στο επόμενο. Θα δώσω το έργο μου ένα όνομα. 400 00:21:31,000 --> 00:21:33,000 Θα καλέσω το Hello. 401 00:21:33,000 --> 00:21:36,000 Είναι ενδιαφέρον, η Apple θεωρεί είστε δημιουργία ενός προϊόντος 402 00:21:36,000 --> 00:21:38,000 ώστε να μπορείτε να το πουλήσει και να μπορούν να κάνουν τα χρήματα. 403 00:21:38,000 --> 00:21:41,000 Κάτω εδώ Πάω να πω ότι αυτό είναι ένα iPhone app. 404 00:21:41,000 --> 00:21:44,000 Μπορείτε να δημιουργήσετε ένα iPad app, ή εάν θέλετε να δημιουργήσετε μια από αυτές τις εφαρμογές 405 00:21:44,000 --> 00:21:47,000 που υποστηρίζει και τις δύο συσκευές που μπορείτε να κάνετε ότι πάρα πολύ. 406 00:21:47,000 --> 00:21:49,000 Αυτά είναι ό, τι θέλετε checkmarks σας να μοιάζουν. 407 00:21:49,000 --> 00:21:51,000 >> Θέλετε να χρησιμοποιήσετε storyboards, το οποίο θα δούμε αργότερα, 408 00:21:51,000 --> 00:21:54,000 και σίγουρα θέλετε να χρησιμοποιήσετε αυτόματη μέτρηση αναφοράς, 409 00:21:54,000 --> 00:21:58,000 το οποίο είναι ένα καλό χαρακτηριστικό γνώρισμα που σας εμποδίζει από το να έχουν να λένε malloc και δωρεάν. 410 00:21:58,000 --> 00:22:03,000 Εκτός αν θέλετε να καλέσετε malloc και δωρεάν, θα άφηνα αυτό ελέγχεται. 411 00:22:03,000 --> 00:22:07,000 Θα κάντε κλικ στο επόμενο, και τελικά, αυτό πρόκειται να με ρωτήσεις πού θέλετε να το αποθηκεύσετε. 412 00:22:07,000 --> 00:22:14,000 Θα χτυπήσει τη δημιουργία, και εδώ πάμε. 413 00:22:14,000 --> 00:22:16,000 Δημιούργησα ένα νέο έργο. 414 00:22:16,000 --> 00:22:19,000 Πάνω εδώ στα αριστερά είναι όλα τα αρχεία που βρίσκονται μέσα του έργου μου, 415 00:22:19,000 --> 00:22:22,000 και παρατηρήστε ότι πήρα ένα σωρό, και εγώ ακόμα δεν έκανα τίποτα. 416 00:22:22,000 --> 00:22:24,000 IOS είναι μεγάλη. 417 00:22:24,000 --> 00:22:27,000 >> Για παράδειγμα, εδώ αυτό ViewController.h, 418 00:22:27,000 --> 00:22:30,000 αυτό πρόκειται να εκπροσωπήσει πρώτο ελεγκτή την άποψή μου, 419 00:22:30,000 --> 00:22:32,000 έτσι ώστε η πρώτη οθόνη στο εσωτερικό του app μου. 420 00:22:32,000 --> 00:22:34,000 Τώρα ξέρουμε τι είναι αυτό που λέει. 421 00:22:34,000 --> 00:22:36,000 Εμείς λέμε Παίρνω αυτό το ViewController τάξη, 422 00:22:36,000 --> 00:22:40,000 και ένα ViewController κάνει ό, τι κάνει ένας UIViewController, 423 00:22:40,000 --> 00:22:43,000 και αυτό, πάλι, είναι κάποια κατηγορία ότι η Apple έγραψε ότι κάνει πολλά πράγματα βολικό για μας 424 00:22:43,000 --> 00:22:46,000 όπως εμφανίζονται στην οθόνη. 425 00:22:46,000 --> 00:22:50,000 Εδώ είναι που μπορεί πραγματικά να αρχίσει να καθορίζει τι ελεγκτή την άποψή μου κάνει, 426 00:22:50,000 --> 00:22:52,000 και αποδεικνύεται ότι εγώ πραγματικά δεν χρειάζεται τίποτα από όλα αυτά. 427 00:22:52,000 --> 00:22:55,000 Αυτό είναι ο κωδικός στερεότυπο ότι η Apple μου δίνει δωρεάν. 428 00:22:55,000 --> 00:22:59,000 Έκανα ανάγκη ότι η πρώτη γραμμή, ή δεν έχω μια τάξη, 429 00:22:59,000 --> 00:23:02,000 έτσι ώστε να μπορούμε να απαλλαγούμε από αυτό και να απαλλαγούμε από αυτό. 430 00:23:02,000 --> 00:23:05,000 Εντάξει, έτσι αυτό είναι κενή οθόνη μου. 431 00:23:05,000 --> 00:23:08,000 >> Τώρα ας κάντε κλικ σε αυτό το MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 και αυτό είναι που αρχίζει να παίρνει ενδιαφέρον. 433 00:23:11,000 --> 00:23:14,000 Αυτό αποτελεί την πρώτη οθόνη στην εφαρμογή μου. 434 00:23:14,000 --> 00:23:17,000 Αν θέλετε να προσθέσετε ένα κουμπί, HTML σε είχα για να δημιουργήσετε μια ετικέτα κουμπί. 435 00:23:17,000 --> 00:23:20,000 Το Android θα πρέπει να δημιουργήσετε μια ετικέτα κουμπιού, 436 00:23:20,000 --> 00:23:23,000 αλλά σε iOS αν μόλις έρθει εδώ κάτω στην κάτω δεξιά γωνία 437 00:23:23,000 --> 00:23:27,000 και αν κάνω κλικ σε αυτό 3η εδώ όπου λέει αντικείμενα, 438 00:23:27,000 --> 00:23:31,000 και μπορώ να μετακινηθείτε προς τα κάτω, ή μπορώ να ξεκινήσετε την αναζήτηση για το κουμπί. 439 00:23:31,000 --> 00:23:35,000 Και κοίτα, ένα κουμπί, οπότε αν πραγματικά drag and drop αυτό το δικαίωμα εκεί, 440 00:23:35,000 --> 00:23:38,000 Έχω προσθέσει μόλις ένα κουμπί σε αυτή την οθόνη για app μου. 441 00:23:38,000 --> 00:23:41,000 Αν θέλετε να αλλάξετε το κείμενο, μπορώ να διπλό κλικ, 442 00:23:41,000 --> 00:23:47,000 πω κάτι δελεαστικό σαν "Me Πατήστε". 443 00:23:47,000 --> 00:23:51,000 Εντάξει, τώρα αν μπορώ να εκτελέσω αυτό το app, έτσι ώστε να το υπολογίσουν, 444 00:23:51,000 --> 00:23:54,000 έτσι για να το τρέξει κάνω κλικ στο κουμπί play στην πάνω αριστερή, και δεν υπάρχει app μου. 445 00:23:54,000 --> 00:23:58,000 Δεν έκανα τίποτα, και πήρα ένα γλυκό αναζητούν iPhone app. 446 00:23:58,000 --> 00:24:01,000 Αν θέλω να το σταματήσει, μπορείτε να κάνετε κλικ στο κουμπί stop 447 00:24:01,000 --> 00:24:03,000 επειδή είναι πιο διασκεδαστικό. 448 00:24:03,000 --> 00:24:07,000 >> Ας πούμε ότι θέλω πραγματικά να συμβεί κάτι όταν πατάω το κουμπί. 449 00:24:07,000 --> 00:24:09,000 Για να το κάνετε αυτό που πρέπει να κάνω είναι ότι χρειάζεστε για να δημιουργήσετε 450 00:24:09,000 --> 00:24:13,000 ένα νέο πρόγραμμα χειρισμού συμβάντων ή μια ενέργεια. 451 00:24:13,000 --> 00:24:16,000 Αυτό σημαίνει ότι θα πρέπει να δημιουργήσει κάποια μέθοδο που θέλω να ονομάζεται 452 00:24:16,000 --> 00:24:18,000 όταν πατάω το κουμπί, οπότε ας δημιουργήσουμε μια νέα μέθοδο. 453 00:24:18,000 --> 00:24:20,000 Είμαι μέσα από ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Θέλω να πω ότι υπάρχει μια μέθοδος. 455 00:24:22,000 --> 00:24:26,000 Χρειάζομαι μια παύλα πρώτα επειδή Πάω να ζητούν αυτό στον ελεγκτή άποψη. 456 00:24:26,000 --> 00:24:28,000 Πρέπει να δώσει σε αυτό το είδος. 457 00:24:28,000 --> 00:24:31,000 Ο τύπος του αυτό πρόκειται να είναι αυτό το πράγμα IBAction που είδαμε νωρίτερα. 458 00:24:31,000 --> 00:24:35,000 Αυτό είναι ένα πρόγραμμα χειρισμού συμβάντων, γι 'αυτό πρόκειται να επιστρέψει ένα IBAction, 459 00:24:35,000 --> 00:24:38,000 και αυτό είναι μια υπόδειξη για να Xcode να πω ότι 460 00:24:38,000 --> 00:24:40,000 αυτό είναι κάτι που θέλω να συνδέσετε κάτι. 461 00:24:40,000 --> 00:24:45,000 Μπορώ να σας δώσω ένα όνομα, όπως buttonPressed, ερωτηματικό. 462 00:24:45,000 --> 00:24:48,000 >> Τώρα έχω δηλώσει μια νέα μέθοδο μέσα στην τάξη μου. 463 00:24:48,000 --> 00:24:50,000 Έχω πει η μέθοδος αυτή πρέπει να υπάρχει. 464 00:24:50,000 --> 00:24:53,000 Τώρα, ας έρθει σε ViewController.m, 465 00:24:53,000 --> 00:24:56,000 και ας πούμε ό, τι αυτή η μέθοδος μπορεί να κάνει. 466 00:24:56,000 --> 00:25:03,000 Αν αρχίσετε να πληκτρολογείτε, για παράδειγμα, (κενό) buttonPressed 467 00:25:03,000 --> 00:25:06,000 Ανακοίνωση Xcode είναι πραγματικά ωραίο και Συμπληρώνει αυτόματα για μένα. 468 00:25:06,000 --> 00:25:09,000 Αυτό είναι πραγματικά υπέροχο. 469 00:25:09,000 --> 00:25:12,000 Σημειώστε εδώ ότι στο εσωτερικό του αρχείου. Μ. μπορώ να πω επίσης άκυρη, 470 00:25:12,000 --> 00:25:15,000 και αυτό οφείλεται στο γεγονός ότι IBAction δεν είναι στην πραγματικότητα ένας τύπος. 471 00:25:15,000 --> 00:25:19,000 Είναι πραγματικά hashtag ορίζεται κάπου να είναι ένα κενό, 472 00:25:19,000 --> 00:25:22,000 και πάλι, αυτό είναι μόνο ένα δείγμα για Xcode που λέει 473 00:25:22,000 --> 00:25:25,000 Θέλω αυτό να είναι ένα πρόγραμμα χειρισμού συμβάντων, και θα δούμε γιατί μέσα σε μόλις ένα δευτερόλεπτο. 474 00:25:25,000 --> 00:25:28,000 Όταν αυτό το κουμπί είναι πατημένο Πάω να κάνω κάτι ενοχλητικό 475 00:25:28,000 --> 00:25:30,000 όπως εμφανίζεται ένα αναδυόμενο παράθυρο. 476 00:25:30,000 --> 00:25:35,000 >> Για να γίνει αυτό μπορώ να δημιουργήσω ένα νέο παράδειγμα της κατηγορίας αυτής που ονομάζεται UIAlertView, 477 00:25:35,000 --> 00:25:39,000 και αυτό είναι μια κατηγορία που η Apple έγραψε ότι πρόκειται να εμφανίσει ενοχλητικά αναδυόμενα παράθυρα. 478 00:25:39,000 --> 00:25:43,000 Θα καλέσετε αυτό το αναδυόμενο παράθυρο προειδοποίησης, και έχω 2 βήματα, να θυμάστε, για τη δημιουργία αυτού του αντικειμένου. 479 00:25:43,000 --> 00:25:46,000 Το πρώτο πράγμα που πρέπει να κάνετε είναι να εκχωρήσετε χώρο. 480 00:25:46,000 --> 00:25:48,000 Θέλω μια UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Θέλω να εκχωρήσετε χώρο. Αυτός είναι ο πρώτος τρόπος μου. 482 00:25:51,000 --> 00:25:53,000 Επόμενη μέθοδο μου που θέλω είναι να γίνει η προετοιμασία, 483 00:25:53,000 --> 00:25:58,000 και έτσι έχω αυτό το μεγάλο, μακρύ μέθοδο που ονομάζεται initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Αυτός είναι βασικά πρόκειται να ελέγξει τι λέει αυτό το αναδυόμενο παράθυρο. 485 00:26:01,000 --> 00:26:04,000 Ο τίτλος του παραθύρου μου μπορεί να είναι γεια. 486 00:26:04,000 --> 00:26:08,000 Το μήνυμα αυτού του παραθύρου μπορεί να είναι "Αυτό είναι το iOS." 487 00:26:08,000 --> 00:26:10,000 Εκπρόσωπος πράγμα, δεν ξέρω τι είναι αυτό. 488 00:26:10,000 --> 00:26:13,000 Ας πούμε ότι δεν είναι τίποτα. 489 00:26:13,000 --> 00:26:18,000 Τώρα το κουμπί που πρόκειται να εμφανιστούν μπορεί να πει κάτι σαν «Είναι σίγουρα», 490 00:26:18,000 --> 00:26:24,000 και δεν θέλω πραγματικά κάποια άλλα κουμπιά, οπότε ας το διαγράψετε και να κλείσει το βραχίονα. 491 00:26:24,000 --> 00:26:27,000 >> Εντάξει, έχω δημιουργήσει μια επιπλέον ένα. Εκεί πάμε. 492 00:26:27,000 --> 00:26:30,000 Αυτό είναι το πώς μπορώ να δημιουργήσω ένα νέο αναδυόμενο παράθυρο. 493 00:26:30,000 --> 00:26:35,000 Αν θέλετε να δείτε πραγματικά το αναδυόμενο παράθυρο που θέλετε να καλέσετε τη μέθοδο show. 494 00:26:35,000 --> 00:26:38,000 Για να γίνει αυτό μπορώ να πω σε εγρήγορση και επίδειξη, 495 00:26:38,000 --> 00:26:40,000 και πάλι, autocomplete ήταν σούπερ ωραία. 496 00:26:40,000 --> 00:26:42,000 Αν ξέχασα τι ήταν αυτό, αν εγώ μόλις πληκτρολογήσατε στο s, 497 00:26:42,000 --> 00:26:45,000 Μπορώ να μετακινηθείτε εδώ για να καταλάβω τι ήταν, 498 00:26:45,000 --> 00:26:48,000 φιλτράρει και όμορφα. 499 00:26:48,000 --> 00:26:52,000 Τώρα δημιούργησε αυτό το νέο αναδυόμενο παράθυρο. 500 00:26:52,000 --> 00:26:55,000 Θα επανέλθουμε σε αυτό αργότερα εκπρόσωπος σημαίνει, 501 00:26:55,000 --> 00:26:58,000 και τώρα θέλω να πω ότι θέλω αυτή η μέθοδος πρέπει να απολυθούν 502 00:26:58,000 --> 00:27:01,000 όταν πατάω το κουμπί, έτσι είμαι πρόκειται να επανέλθει στο storyboard μου, 503 00:27:01,000 --> 00:27:04,000 και θέλω να αποδίδουν τώρα αυτό IBAction. 504 00:27:04,000 --> 00:27:06,000 Το πρώτο πράγμα που θέλετε να κάνετε είναι να κάνετε κλικ στο κουμπί. 505 00:27:06,000 --> 00:27:08,000 Όταν πατάω το κουμπί αυτό θέλω κάτι να συμβεί. 506 00:27:08,000 --> 00:27:10,000 Είμαι δεν πρόκειται να κρατήσετε πατημένο τον έλεγχο. 507 00:27:10,000 --> 00:27:13,000 Πάω να κάνετε κλικ και να σύρετε από το κουμπί 508 00:27:13,000 --> 00:27:15,000 σε πάνω από εδώ εκεί που λέει View Controller. 509 00:27:15,000 --> 00:27:17,000 Μπορούμε να δούμε ότι ανάβει όμορφα επάνω. 510 00:27:17,000 --> 00:27:22,000 >> Αν αφήσει να πάει με το ποντίκι μου έχω τώρα αυτό το αναδυόμενο εδώ όπου έχω κάποιες επιλογές. 511 00:27:22,000 --> 00:27:24,000 Ένα από αυτά είναι τα γεγονότα που μπορούν να εγγραφούν. 512 00:27:24,000 --> 00:27:28,000 Αυτά είναι όλα από αυτές τις μεθόδους που δηλώνονται στο αρχείο μου, η ως IBActions. 513 00:27:28,000 --> 00:27:31,000 Αυτό είναι το πώς Xcode ξέρει τι θα πρέπει να εμφανίζονται σε αυτή τη μικρή λίστα, 514 00:27:31,000 --> 00:27:33,000 έτσι αυτό είναι μόνο ένα δείγμα. 515 00:27:33,000 --> 00:27:37,000 Αν κάνω κλικ στο κουμπί πατημένο, έχω εγγραφεί τώρα το event-handler. 516 00:27:37,000 --> 00:27:41,000 Σε JavaScript θα έπρεπε να πω ότι έχω κάποιο κώδικα που κατέγραψε το πρόγραμμα χειρισμού συμβάντων. 517 00:27:41,000 --> 00:27:43,000 Στην Objective-C ήταν πραγματικά τόσο εύκολο. 518 00:27:43,000 --> 00:27:46,000 Αν τρέξω αυτό πάλι 519 00:27:46,000 --> 00:27:49,000 τώρα όταν πατάω το κουμπί χειρισμού συμβάντων μου πρόκειται να φωτιά, 520 00:27:49,000 --> 00:27:51,000 και είμαι πρόκειται να πάρει αυτό το αναδυόμενο παράθυρο. 521 00:27:51,000 --> 00:27:54,000 Σούπερ, σούπερ απλό εκεί. 522 00:27:54,000 --> 00:27:57,000 >> Αν ποτέ θέλετε να δείτε όλα τα συμβάντα που τυχαίνει να είναι εγγεγραμμένος 523 00:27:57,000 --> 00:28:00,000 σε ένα στοιχείο, αν κάνω κλικ σε αυτό το κουμπί 524 00:28:00,000 --> 00:28:02,000 και έρχομαι εδώ στη δεξιά πλευρά 525 00:28:02,000 --> 00:28:05,000 πρώτα να δείτε εδώ μπορώ να κάνω τα πράγματα όπως τον τύπο του κουμπιού, 526 00:28:05,000 --> 00:28:08,000 οπότε αν θέλετε ένα από αυτά τα εγώ ή το κουμπί Προσθήκη επαφής 527 00:28:08,000 --> 00:28:10,000 ή οτιδήποτε άλλο. 528 00:28:10,000 --> 00:28:13,000 Αν θέλετε να δείτε όλα τα συμβάντα που είναι σε αυτό το κουμπί 529 00:28:13,000 --> 00:28:16,000 αν έρθω σε όλη τη διαδρομή εδώ στη δεξιά πλευρά 530 00:28:16,000 --> 00:28:19,000 μπορούμε να δούμε εδώ τις εκδηλώσεις που έχω όλα αυτά τα διαφορετικά γεγονότα. 531 00:28:19,000 --> 00:28:23,000 Μπορώ να πατήσετε το κουμπί, όταν αφήσετε το κουμπί, όταν κάνω διπλό βρύση ή οτιδήποτε άλλο, 532 00:28:23,000 --> 00:28:26,000 και το ένα που είναι εγγεγραμμένοι μόνο αυτό το γεγονός που ονομάζεται Touch Up Μέσα, 533 00:28:26,000 --> 00:28:29,000 και αυτό λέει ότι μόλις το δάχτυλό μου ξεκολλήσει το κουμπί 534 00:28:29,000 --> 00:28:32,000 περίπτωση που πρόκειται για φωτιά, και αυτό είναι ακριβώς ό, τι ακριβώς συνέβη. 535 00:28:32,000 --> 00:28:36,000 Αυτό είναι το είδος των πατημένο το κουμπί προεπιλεγμένο συμβάν. 536 00:28:36,000 --> 00:28:39,000 >> Οποιεσδήποτε ερωτήσεις μέχρι τώρα; 537 00:28:39,000 --> 00:28:43,000 Εντάξει, αυτό είναι το πώς μπορούμε να αρχίσουμε να συνδέσετε τα πράγματα στον κώδικά μας 538 00:28:43,000 --> 00:28:46,000 σε πράγματα μέσα της διεπαφής μας. 539 00:28:46,000 --> 00:28:49,000 Θυμηθείτε το πρώτο πράγμα που έπρεπε να κάνουμε ήταν να βρούμε τον κωδικό, 540 00:28:49,000 --> 00:28:54,000 και τότε ενσύρματη αποτελούν τη διασύνδεση με τον κώδικα, 541 00:28:54,000 --> 00:28:57,000 και δεν υπάρχει πρώτο app μας. 542 00:28:57,000 --> 00:29:00,000 Εντάξει, αυτό ήταν πραγματικά δροσερό, και δημιουργήσαμε αυτό το κουμπί. 543 00:29:00,000 --> 00:29:03,000 Αυτό που δεν κάνουμε αν θέλουμε να έχουμε για να δημιουργήσετε μια δέσμη των ιδιοτήτων 544 00:29:03,000 --> 00:29:05,000 που αντιπροσωπεύουν αυτά τα κουμπιά; 545 00:29:05,000 --> 00:29:08,000 Για παράδειγμα, στην Tic Tac Toe έχω 9 Κουμπιά, 546 00:29:08,000 --> 00:29:11,000 και θα ήθελα να είναι σούπερ, σούπερ ενοχλητικό να πρέπει να drag and drop 9 φορές 547 00:29:11,000 --> 00:29:14,000 ή αν έπρεπε να κάνω Tic Tac Toe με 81 αντί 9 548 00:29:14,000 --> 00:29:17,000 και έπρεπε να drag and drop 81 φορές, και αυτό είναι κουτσός. 549 00:29:17,000 --> 00:29:20,000 Τι μπορούμε να κάνουμε αντ 'αυτού είναι πολύ σαν ένα HTML 550 00:29:20,000 --> 00:29:23,000 όταν είχαμε τα πράγματα όπως τα αναγνωριστικά και τα ονόματα και μπορούμε να ψάξουμε για τα πράγματα 551 00:29:23,000 --> 00:29:27,000 από την ταυτότητα τους, υπάρχει μια παρόμοια έννοια στο iOS που ονομάζονται ετικέτες. 552 00:29:27,000 --> 00:29:31,000 >> Μια ετικέτα είναι απλά μια μοναδική αριθμητική αναγνωριστικό για ένα στοιχείο. 553 00:29:31,000 --> 00:29:34,000 Αν λέω αυτό έχει μια ετικέτα από το 0, για παράδειγμα, 554 00:29:34,000 --> 00:29:38,000 αν μπορώ να δημιουργήσω ένα κουμπί και να του δώσετε μια ετικέτα από το 0, και θα δούμε πώς να το κάνουμε αυτό μέσα σε μόλις ένα δευτερόλεπτο, 555 00:29:38,000 --> 00:29:41,000 αν θέλω να πάρω αυτό το κουμπί μπορώ να πω ότι απλά θέλετε να καλέσετε 556 00:29:41,000 --> 00:29:45,000 viewWithTag η μέθοδος για το αντικείμενο πάνω από εδώ, 557 00:29:45,000 --> 00:29:48,000 η self.view, η οποία αντιπροσωπεύει την τρέχουσα οθόνη, για παράδειγμα. 558 00:29:48,000 --> 00:29:53,000 Αν καλέσετε τη μέθοδο viewWithTag, Πάω να τραβήξει πίσω το κουμπί με την ετικέτα 0. 559 00:29:53,000 --> 00:29:58,000 Ας ρίξουμε μια ματιά σε αυτό το κτίριο με Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Πρώτον, αυτή είναι storyboard μου. 561 00:30:01,000 --> 00:30:05,000 Έχω δημιουργήσει αυτά τα 10 πλήκτρα UI. 562 00:30:05,000 --> 00:30:07,000 Παρατηρήστε ότι είναι όλα το ίδιο μέγεθος. 563 00:30:07,000 --> 00:30:11,000 Αν κάντε κλικ σε ένα από αυτά και έρχομαι πίσω πάνω σε αυτό εδώ δεξιά πλευρά 564 00:30:11,000 --> 00:30:15,000 θα δείτε έχω προσαρμοστεί η γραμματοσειρά δικαίωμα εδώ, γι 'αυτό έκανε τη γραμματοσειρά λίγο μεγαλύτερο, 565 00:30:15,000 --> 00:30:19,000 αλλά ό, τι έκανα και ήταν έθεσα αυτήν την ετικέτα. 566 00:30:19,000 --> 00:30:23,000 Είπα ότι αυτό έχει μια ετικέτα της 1, και αυτό είναι το επάνω αριστερά. 567 00:30:23,000 --> 00:30:26,000 >> Τώρα, αν κάνω κλικ άλλο κουμπί, όπως αυτό το δεύτερο εδώ, 568 00:30:26,000 --> 00:30:29,000 Τώρα θα δείτε ότι η ετικέτα μου είναι 2. 569 00:30:29,000 --> 00:30:32,000 Κάθε ένα από αυτά τα κουμπιά έχει μόνο μια μοναδική ετικέτα, 570 00:30:32,000 --> 00:30:35,000 και έτσι αυτό αργότερα πώς θα πάω για να ξεκινήσει την αλληλεπίδραση 571 00:30:35,000 --> 00:30:38,000 με app μου. 572 00:30:38,000 --> 00:30:40,000 Αυτό είναι όλα μέσα από έναν ελεγκτή άποψη, 573 00:30:40,000 --> 00:30:42,000 αλλά εδώ είναι ό, τι έχουμε. 574 00:30:42,000 --> 00:30:44,000 Έχουμε 3 ακίνητα εδώ. 575 00:30:44,000 --> 00:30:49,000 Η πρώτη και η τελευταία πρόκειται να εκπροσωπήσει την κατάσταση του σκάφους μου. 576 00:30:49,000 --> 00:30:53,000 Βασικά αυτή η πρώτη είναι μια σειρά που αντιπροσωπεύουν όπου η Xs και Os είναι. 577 00:30:53,000 --> 00:30:57,000 Η άλλη μας λέει εδώ είναι η σειρά του. 578 00:30:57,000 --> 00:31:01,000 Θα παρατηρήσετε ότι έχω επίσης αυτά τα πράγματα εδώ. 579 00:31:01,000 --> 00:31:05,000 Πριν, όταν δηλώσαμε ιδιότητες τους δώσαμε ένα όνομα και έναν τύπο. 580 00:31:05,000 --> 00:31:08,000 Μπορούμε, επίσης, να τους δώσει κάποιες πρόσθετες πληροφορίες εδώ. 581 00:31:08,000 --> 00:31:11,000 Η πρώτη λέει nonatomic, και ό, τι αυτό λέει 582 00:31:11,000 --> 00:31:16,000 είναι ουσιαστικά μόνο ένα πράγμα θα μπορέσει ποτέ να προσπαθείτε να μεταβείτε σε αυτή την μεταβλητή σε μια στιγμή. 583 00:31:16,000 --> 00:31:19,000 Θα μπορούσατε να κάνετε πιο σύνθετες εφαρμογές που είναι multi-threaded, 584 00:31:19,000 --> 00:31:22,000 και έτσι πίσω στο Scratch είχαμε διαφορετικά θέματα, 585 00:31:22,000 --> 00:31:25,000 και διαφορετικά ξωτικά θα μπορούσε να κάνει διαφορετικά πράγματα την ίδια στιγμή. 586 00:31:25,000 --> 00:31:29,000 >> Αν αυτό δεν είναι η περίπτωση, που δεν είναι κάτι που θα πρέπει να εξετάσουμε, 587 00:31:29,000 --> 00:31:33,000 αν πούμε nonatomic αυτό είναι πραγματικά πρόκειται να κάνει τα πράγματα λίγο πιο γρήγορα. 588 00:31:33,000 --> 00:31:37,000 Έχουμε, επίσης, αυτό το πράγμα που ονομάζεται ανάθεση, ισχυρή, ή αδύναμη. 589 00:31:37,000 --> 00:31:40,000 Αυτή η εκχώρηση λέει ακριβώς ότι αυτό είναι ένα πρότυπο. 590 00:31:40,000 --> 00:31:43,000 Αυτό δεν είναι ένα αντικείμενο ή ένα δείκτη επειδή αυτό είναι μόνο ένα bool, 591 00:31:43,000 --> 00:31:46,000 bool έτσι είναι χτισμένο σε Objective-C. 592 00:31:46,000 --> 00:31:49,000 Αυτό δεν λέει να προσπαθήσουμε να κάνουμε κάτι φανταχτερό με δείκτες εδώ. 593 00:31:49,000 --> 00:31:51,000 Είναι μια παλιά τακτική scaler. 594 00:31:51,000 --> 00:31:54,000 Ισχυρά και αδύνατα, αυτό το αδύναμο λέει ότι στην πραγματικότητα 595 00:31:54,000 --> 00:31:57,000 Θέλω αυτό να δείχνει κάτι στον ελεγκτή άποψη. 596 00:31:57,000 --> 00:32:00,000 Είμαι δεν πρόκειται να διαθέσει στην πραγματικότητα ή init τον εαυτό μου αυτό. 597 00:32:00,000 --> 00:32:04,000 Ο οικοδόμος διεπαφή, όταν τρέχω την εφαρμογή, πρόκειται να χειριστεί όλα αυτά αρχικοποίηση. 598 00:32:04,000 --> 00:32:07,000 Αν πω αδύναμη, που λέει κάποιος άλλος πρόκειται να δημιουργήσει αυτό. 599 00:32:07,000 --> 00:32:09,000 Αν πω ισχυρή, αυτό λέει ότι είμαι πρόκειται να είναι η μία 600 00:32:09,000 --> 00:32:12,000 Αυτό είναι αντικείμενο τη δημιουργία αυτού του σκάφους, 601 00:32:12,000 --> 00:32:14,000 και έτσι εδώ έχω μερικές ακόμα μεθόδους εδώ, 602 00:32:14,000 --> 00:32:18,000 για παράδειγμα, μια ενέργεια για όταν ο νέος παιχνίδι κουμπί είναι πατημένο, 603 00:32:18,000 --> 00:32:20,000 η αγωγή, όταν οποιοδήποτε από τα άλλα κουμπιά πιέζονται, 604 00:32:20,000 --> 00:32:23,000 και λοιπά et. 605 00:32:23,000 --> 00:32:26,000 >> Εμείς δεν θα μπει σε πάρα πολύ από τη λογική της Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 αν και είναι πολύ συναρπαστικό, αλλά ας ρίξουμε μια ματιά στο 607 00:32:30,000 --> 00:32:33,000 μερικά από τα πράγματα που μπορούμε να κάνουμε μέσα από το iOS. 608 00:32:33,000 --> 00:32:35,000 Αυτή η νέα μέθοδος παιχνίδι πρόκειται να απολυθούν 609 00:32:35,000 --> 00:32:37,000 κάθε φορά που πατάω το κουμπί νέο παιχνίδι. 610 00:32:37,000 --> 00:32:41,000 Για να συνδέσετε μέχρι και ότι εγώ απλά να έρθει να μου storyboard. 611 00:32:41,000 --> 00:32:43,000 Χτύπησα στο νέο παιχνίδι. 612 00:32:43,000 --> 00:32:47,000 Αν έχω έρθει εδώ για να το δικαίωμα μπορώ να δω ότι 613 00:32:47,000 --> 00:32:50,000 Αγγίξτε Up Μέσα είναι ενσύρματο για την newGame μέθοδο. 614 00:32:50,000 --> 00:32:53,000 Γι 'αυτό πρόκειται να πάρει φωτιά. 615 00:32:53,000 --> 00:32:56,000 Η μέθοδος newGame πρόκειται να κάνει κάποια set up. 616 00:32:56,000 --> 00:32:59,000 Είναι πρόκειται να πω Θέλω να καθαρίσετε την κατάσταση του σκάφους. 617 00:32:59,000 --> 00:33:01,000 Αυτή είναι μια ωραία μέθοδος για ευμετάβλητος συστοιχίες. 618 00:33:01,000 --> 00:33:03,000 Αυτό δεν πρόκειται να πει ότι είναι τώρα η σειρά Χ, 619 00:33:03,000 --> 00:33:07,000 και τώρα είμαι πρόκειται να επωφεληθούν από αυτή την viewWithTag πράγμα. 620 00:33:07,000 --> 00:33:11,000 >> Ξέρω ότι τα κουμπιά μου έχουν τις ετικέτες 1-9, 621 00:33:11,000 --> 00:33:13,000 και αυτό είναι κάτι που διάλεξε αυθαίρετα. 622 00:33:13,000 --> 00:33:15,000 Αν θέλετε να ορίσετε το κείμενο του κάθε κουμπιού να είναι άδειο 623 00:33:15,000 --> 00:33:17,000 γιατί μόλις ξεκίνησε ένα νέο παιχνίδι και δεν θέλω καμία 624 00:33:17,000 --> 00:33:20,000 Xs ή Os να μείνει πάνω μπορώ να το κάνω αυτό. 625 00:33:20,000 --> 00:33:24,000 Μπορώ να πω ότι θέλω την άποψη με την ετικέτα, 1, 2, 3, 4 και τα λοιπά. 626 00:33:24,000 --> 00:33:27,000 Αυτό θα τραβήξει ένα διαφορετικό κουμπί κάθε φορά. 627 00:33:27,000 --> 00:33:30,000 Εδώ είμαι πρόκειται να το ρίξει στο UIButton. 628 00:33:30,000 --> 00:33:33,000 Ακριβώς όπως θα μπορούσαμε να ρίχνει ints να επιπλέει και το αντίστροφο 629 00:33:33,000 --> 00:33:37,000 αυτό λέει ότι θέλω να ρίξει το σε ένα UIButton. 630 00:33:37,000 --> 00:33:40,000 Αυτό σημαίνει ότι το είδος του αυτό θα είναι μια * UIButton 631 00:33:40,000 --> 00:33:43,000 λόγω της δείκτες, αλλά μην ανησυχείτε, δεν είναι πια τρομακτικό. 632 00:33:43,000 --> 00:33:47,000 >> Μόλις έχω αυτό το κουμπί Πάω να καλέσει μια μέθοδο σε αυτό. 633 00:33:47,000 --> 00:33:50,000 Αυτή η μέθοδος ονομάζεται setTitle forState, έτσι και αυτό λέει 634 00:33:50,000 --> 00:33:53,000 Θέλω να ρυθμίσετε το κείμενο του κουμπιού να είναι η κενή συμβολοσειρά, 635 00:33:53,000 --> 00:33:57,000 και θέλω να είναι η κενή συμβολοσειρά, όταν δεν είναι πατημένο. 636 00:33:57,000 --> 00:34:01,000 Αν είμαι με τη χρήση αυτής της μεθόδου, μπορώ να αλλάξω το κείμενο του κουμπιού 637 00:34:01,000 --> 00:34:04,000 μόλις κάποιος χτυπά, αλλά θέλουμε να πούμε όταν το κουμπί είναι απλά κάθεται εκεί 638 00:34:04,000 --> 00:34:07,000 Θέλω το κείμενο να είναι κενό. 639 00:34:07,000 --> 00:34:10,000 Τέλος, θα πάμε για την προετοιμασία του σκάφους μου, 640 00:34:10,000 --> 00:34:12,000 και Πάω να πω ότι όλα είναι επί του παρόντος σε 0, 641 00:34:12,000 --> 00:34:15,000 έτσι αυτό μέλη του διοικητικού συμβουλίου αμετάβλητη είναι ένα μεταβλητό πίνακα, 642 00:34:15,000 --> 00:34:21,000 το οποίο σημαίνει ότι μπορούν να καλέσουν το addObject μέθοδο και μόνο ένα 0 στο εσωτερικό του. 643 00:34:21,000 --> 00:34:23,000 Αυτό είναι τι συμβαίνει όταν μπορώ να δημιουργήσω ένα νέο παιχνίδι. 644 00:34:23,000 --> 00:34:25,000 >> Ας ρίξουμε μια ματιά σε ένα άλλο. 645 00:34:25,000 --> 00:34:28,000 Η μέθοδος αυτή εδώ είναι η IBAction που πρόκειται να πιεστεί 646 00:34:28,000 --> 00:34:31,000 κάθε φορά που ένα από αυτά τα τετράγωνα είναι πατημένο. 647 00:34:31,000 --> 00:34:33,000 Τώρα έχουμε κάποια Tic Tac Toe λογική εδώ. 648 00:34:33,000 --> 00:34:36,000 Θα καταλάβω τη σειρά των οποίων είναι, 649 00:34:36,000 --> 00:34:39,000 και με βάση αυτό που εμείς είτε ένα Χ ή O, 650 00:34:39,000 --> 00:34:43,000 αλλά παρατηρούμε ότι είμαστε το ίδιο επαναχρησιμοποίηση χειρισμού συμβάντων 651 00:34:43,000 --> 00:34:45,000 για κάθε ένα από αυτά τα κουμπιά. 652 00:34:45,000 --> 00:34:49,000 Αυτό σημαίνει ότι δεν έχουν μια μέθοδο για την κορυφή αριστερό κουμπί, 653 00:34:49,000 --> 00:34:52,000 μια διαφορετική μέθοδο για το κουμπί κάτω δεξιά, αν και θα μπορούσα να έχω κάνει αυτό. 654 00:34:52,000 --> 00:34:54,000 Αυτό δεν θα ήταν πραγματικά καλό σχεδιασμό. 655 00:34:54,000 --> 00:34:57,000 Τι κάνω εδώ είναι Είμαι πραγματικά πρόκειται να καθορίσουν 656 00:34:57,000 --> 00:35:00,000 τι η ετικέτα του κουμπιού που πατήθηκε είναι. 657 00:35:00,000 --> 00:35:04,000 Θα παρατηρήσετε ότι η μέθοδος αυτή το παιχνίδι παίρνει ένα επιχείρημα. 658 00:35:04,000 --> 00:35:07,000 Λέγεται αποστολέα, και τι αποστολέας είναι αποστολέας πρόκειται να 659 00:35:07,000 --> 00:35:10,000 αντιπροσωπεύουν ακριβώς αυτό που λήφθηκε η δράση. 660 00:35:10,000 --> 00:35:15,000 Αν πατήσετε ένα κουμπί, αυτό αποστολέας θα είναι ότι UIButton 661 00:35:15,000 --> 00:35:18,000 που πιέζεται πραγματικά, έτσι ώστε να σημαίνει ότι UIButton 662 00:35:18,000 --> 00:35:20,000 έχει μια ετικέτα, επειδή δημιούργησα μια ετικέτα. 663 00:35:20,000 --> 00:35:23,000 >> Αν θέλω να πάρω την ετικέτα μπορώ απλά να πω 664 00:35:23,000 --> 00:35:26,000 Θέλω την ετικέτα του αποστολέα, 665 00:35:26,000 --> 00:35:28,000 και πάλι, έχω χυτό ακριβώς σε UIButton. 666 00:35:28,000 --> 00:35:32,000 Τυχαίνει να γνωρίζω ότι ο αποστολέας θα είναι μια UIButton. 667 00:35:32,000 --> 00:35:34,000 Δεν πρέπει πάντα να είναι μια UIButton. 668 00:35:34,000 --> 00:35:36,000 Θα μπορούσα, για παράδειγμα, καταχωρήστε το ίδιο χειρισμού συμβάντων 669 00:35:36,000 --> 00:35:38,000  για ένα για ένα κουμπί, μία για ένα ολισθητήρα. 670 00:35:38,000 --> 00:35:40,000 Σε αυτή την περίπτωση, ξέρω ότι είναι όλα τα κουμπιά, έτσι Πάω να πω 671 00:35:40,000 --> 00:35:43,000 Θέλω αυτό να είναι ένα κουμπί, και τότε μπορώ να πάρω την ετικέτα, 672 00:35:43,000 --> 00:35:48,000 και από την ετικέτα τώρα ξέρω πού είμαι μέσα από το διοικητικό συμβούλιο. 673 00:35:48,000 --> 00:35:51,000 Τότε μπορώ να οριστεί απλά είτε το Χ ή το Ο, να αναστρέψετε τη σειρά του, 674 00:35:51,000 --> 00:35:54,000 ελέγξετε ποιος έχει κερδίσει, κ.λπ.. 675 00:35:54,000 --> 00:35:59,000 >> Οποιεσδήποτε ερωτήσεις σχετικά με αυτό το μέτρο; 676 00:35:59,000 --> 00:36:02,000 Εντάξει, όλος ο κώδικας που δημοσιεύτηκε στο διαδίκτυο, δεν θέλουμε να μπει σε πάρα πολύ 677 00:36:02,000 --> 00:36:06,000 της λογικής Tic Tac Toe, αλλά τώρα μπορείτε να δείτε ότι πραγματικά 678 00:36:06,000 --> 00:36:09,000 όλοι κάνουμε εμείς είναι looping πάνω από αυτό το φάσμα, 679 00:36:09,000 --> 00:36:13,000 έτσι έχουμε ένα ζευγάρι των βρόχων για εδώ, και είμαστε απλά σε σύγκριση με δείτε 680 00:36:13,000 --> 00:36:18,000 έχουμε έναν αγώνα σε όλες τις γραμμές, ένας αγώνας σε μια στήλη ή κάτι τέτοιο. 681 00:36:18,000 --> 00:36:21,000 Για να εκτελέσετε πραγματικά αυτό το app, αν πατήσετε σε ένα από αυτά τα κουμπιά 682 00:36:21,000 --> 00:36:24,000 ότι η μέθοδος παιχνίδι απολύθηκε, έτσι ώστε σημαίνει ότι μόλις που 683 00:36:24,000 --> 00:36:31,000 το κουμπί για να είναι ένα Χ, έτσι τώρα αυτό το κουμπί θα είναι ένα Ο, και ούτω καθεξής, 684 00:36:31,000 --> 00:36:35,000 και έτσι αυτό είναι το πώς αρχίζουμε να αλληλεπιδράσει με αυτό το μοναδικό app σελίδα. 685 00:36:35,000 --> 00:36:38,000 >> Θα μετά τον κώδικα, έτσι αισθάνεται ελεύθερη να λάβουν γνώση ότι, 686 00:36:38,000 --> 00:36:43,000 αλλά ας μιλήσουμε τώρα για ορισμένες εφαρμογές που είναι κάτι περισσότερο από μία σελίδα. 687 00:36:43,000 --> 00:36:47,000 Όσο συναρπαστικό κι Tic Tac Toe ήταν, πολλές εφαρμογές στο εσωτερικό του iOS 688 00:36:47,000 --> 00:36:50,000 είναι το είδος αυτών των τρυπάνι κάτω τα πράγματα με πολλαπλές οθόνες. 689 00:36:50,000 --> 00:36:54,000 Η πρώτη έννοια ότι θα πρέπει να μιλήσουμε για τα πρωτόκολλα, 690 00:36:54,000 --> 00:36:57,000 και ένα πρωτόκολλο είναι απλά ένα σύνολο των μεθόδων 691 00:36:57,000 --> 00:36:59,000 ότι μπορείτε να υπόσχονται να καθορίσει. 692 00:36:59,000 --> 00:37:02,000 Αν μπορώ να δημιουργήσω αυτό το νέο πρωτόκολλο με 2 μεθόδους, αυτή η πρώτη, 693 00:37:02,000 --> 00:37:05,000 αν ο τύπος επιστροφής είναι άκυρη, κάλεσα το foo. 694 00:37:05,000 --> 00:37:07,000 Είναι δεν παίρνει ορίσματα. Έχω μια άλλη μέθοδο. 695 00:37:07,000 --> 00:37:11,000 Δεν επιστρέφει int. Κάλεσα το μπαρ, και παίρνει ένα επιχείρημα. 696 00:37:11,000 --> 00:37:14,000 Όλο αυτό το πρωτόκολλο είναι ότι λέγεται SomeProtocol μέχρι εδώ, 697 00:37:14,000 --> 00:37:19,000 αυτό είναι ένα σύνολο από πράγματα που μπορεί κάποιος να εφαρμόσει. 698 00:37:19,000 --> 00:37:22,000 Δεν έχω μέσα από αυτό το πρωτόκολλο, δήλωσε foo τι κάνει. 699 00:37:22,000 --> 00:37:26,000 Αντ 'αυτού, απλά λέω θα μπορούσατε να ορίσετε foo, αν θέλετε να. 700 00:37:26,000 --> 00:37:30,000 Αν είμαι δημιουργώντας έναν ελεγκτή άποψη ή τη δημιουργία μιας κατηγορίας 701 00:37:30,000 --> 00:37:33,000 Μπορώ μέσα από αυτή την υπόσχεση για την εφαρμογή της κλάσης 702 00:37:33,000 --> 00:37:40,000 ορισμένες από αυτές τις μεθόδους, έτσι για παράδειγμα, εάν πούμε 703 00:37:40,000 --> 00:37:43,000 αυτό λέει τώρα κάνω μια υπόσχεση να σας πω ότι μέσα 704 00:37:43,000 --> 00:37:50,000 αυτής της κατηγορίας ελεγκτή άποψη θα έχω για τους ορισμούς τόσο foo και μπαρ. 705 00:37:50,000 --> 00:37:52,000 >> Γιατί είναι χρήσιμο; 706 00:37:52,000 --> 00:37:55,000 Πολλά εξαρτήματα στο εσωτερικό του iOS να επωφεληθούν από αυτό 707 00:37:55,000 --> 00:37:58,000 πρότυπο σχέδιο που ονομάζεται αντιπροσωπεία, και ό, τι λέει η αντιπροσωπεία 708 00:37:58,000 --> 00:38:01,000 είναι ότι, για παράδειγμα, αν έχω ένα πλαίσιο κειμένου 709 00:38:01,000 --> 00:38:04,000 και υπάρχουν κάποια γεγονότα που θα μπορούσαν να καταχωρηθούν στο εσωτερικό του πλαισίου κειμένου μου, 710 00:38:04,000 --> 00:38:07,000 και όχι στη δημιουργία ξεχωριστών εκδηλώσεων τι μπορώ να κάνω είναι μπορώ να πω 711 00:38:07,000 --> 00:38:10,000 ο εκπρόσωπος της αυτό το πλαίσιο κειμένου θα είναι κάποιο αντικείμενο. 712 00:38:10,000 --> 00:38:13,000 Όταν λέω ότι αυτό είναι ένα πληρεξούσιο τώρα αυτό σημαίνει ότι 713 00:38:13,000 --> 00:38:16,000 κάθε φορά που κάποιο γεγονός θα έχουν ψηθεί στο πλαίσιο κειμένου 714 00:38:16,000 --> 00:38:18,000 αντί να καταχωρήσετε ή κάτι τέτοιο 715 00:38:18,000 --> 00:38:21,000 είναι ακριβώς πρόκειται να καλέσετε μια μέθοδο για τον αντιπρόσωπο. 716 00:38:21,000 --> 00:38:24,000 Για παράδειγμα, μέσα από πλαίσιο κειμένου μου έχω μια μέθοδο για όταν πατάω 717 00:38:24,000 --> 00:38:27,000 ότι κάνει το κουμπί στην κάτω δεξιά γωνία, 718 00:38:27,000 --> 00:38:30,000 και έτσι αντί για την εγγραφή χειρισμού συμβάντων αυτό που μπορώ να πω είναι 719 00:38:30,000 --> 00:38:34,000 πλαίσιο κειμένου, εδώ είναι ένα αντικείμενο που θέλω να καλέσετε μια μέθοδο για 720 00:38:34,000 --> 00:38:37,000 κάθε φορά που κάποιος πατήσει το κουμπί γίνει, 721 00:38:37,000 --> 00:38:40,000 και αυτό σημαίνει ότι το αντικείμενο πρέπει να εφαρμόσει κάποιο πρωτόκολλο 722 00:38:40,000 --> 00:38:45,000 που λέει Υπόσχομαι να ορίσει αυτή την ενέργεια γίνεται κουμπί, 723 00:38:45,000 --> 00:38:47,000 γιατί αν δεν καθορίζει την μέθοδο και θα πατήστε το κουμπί Τέλος, 724 00:38:47,000 --> 00:38:49,000 τότε πρόκειται να είναι συγχέοντας. 725 00:38:49,000 --> 00:38:55,000 >> Ας ρίξουμε μια ματιά σε ένα παράδειγμα. 726 00:38:55,000 --> 00:38:58,000 Εδώ έχω απλά ένα πλαίσιο κειμένου, 727 00:38:58,000 --> 00:39:04,000 και μία από τις ιδιότητες του αυτό το πλαίσιο κειμένου εδώ σε αυτή τη δεξιά πλευρά είναι ο εκπρόσωπος. 728 00:39:04,000 --> 00:39:06,000 Αυτή είναι μια ιδιότητα της κατηγορίας. 729 00:39:06,000 --> 00:39:09,000 Αυτό που έκανα εδώ είναι να ελέγξω κλικ, και σύρθηκε από αυτό το σημείο εδώ 730 00:39:09,000 --> 00:39:13,000 με τον ελεγκτή άποψη, και ότι λέει τώρα η εκπρόσωπος της αυτό το πλαίσιο κειμένου 731 00:39:13,000 --> 00:39:18,000 πρόκειται να είναι ο ελεγκτής άποψη. 732 00:39:18,000 --> 00:39:20,000 Αυτό σημαίνει ότι όταν κάποιες ενέργειες συμβεί, παρά την εγγραφή 733 00:39:20,000 --> 00:39:25,000 ξεχωριστές χειρισμού συμβάντων θέλω να τους στείλει στον πληρεξούσιο. 734 00:39:25,000 --> 00:39:28,000 Τώρα, ας ρίξουμε μια ματιά σε ελεγκτή την άποψή μου. 735 00:39:28,000 --> 00:39:32,000 Μέσα από το αρχείο. Η έχω κάνει μια υπόσχεση. 736 00:39:32,000 --> 00:39:36,000 Έχω υποσχεθεί να εφαρμόσει κάποιες μεθόδους μέσα από αυτό το πρωτόκολλο 737 00:39:36,000 --> 00:39:38,000 ονομάζονται UITextFieldDelegate, και πάλι, 738 00:39:38,000 --> 00:39:42,000 αυτό είναι μόνο μερικές λίστα με μερικά πράγματα που μπορώ να επιλέξουν να εφαρμόσουν. 739 00:39:42,000 --> 00:39:46,000 >> Αν έρθω εδώ σε. Μ. αρχείο μου, έχω εφαρμόσει μια τέτοια μέθοδος. 740 00:39:46,000 --> 00:39:49,000 Έχω την αποκάλεσε textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 γιατί αυτό είναι ό, τι λεγόταν στο εσωτερικό του πρωτοκόλλου. 742 00:39:52,000 --> 00:39:57,000 Και τώρα κάθε φορά που πατάω το κουμπί γίνει μέσα από αυτό το πεδίο κειμένου 743 00:39:57,000 --> 00:40:00,000 αυτό είναι ό, τι πρόκειται να πάρει ονομάζεται, έτσι δεν είχα εγγραφεί ένα πρόγραμμα χειρισμού συμβάντων. 744 00:40:00,000 --> 00:40:03,000 Έχω συνδέσει τον εκπρόσωπο, και κάθε φορά που αυτό το γεγονός έχει απολυθεί 745 00:40:03,000 --> 00:40:08,000 αυτή είναι η μέθοδος που θα πάρει η ονομασία της, οπότε αν έρθω εδώ για να storyboard μου και να τρέξω το- 746 00:40:08,000 --> 00:40:11,000 Αν και αυτό είναι φόρτωση μπορούμε να δούμε τι κάνει. 747 00:40:11,000 --> 00:40:13,000 Στην οθόνη του υπολογιστή μου έχω 2 πράγματα. 748 00:40:13,000 --> 00:40:16,000 Έχω αυτό το πεδίο κειμένου, και έχω αυτή την ετικέτα. 749 00:40:16,000 --> 00:40:19,000 Είμαι απλά λέγοντας θέλω το κείμενο αυτής της ετικέτας 750 00:40:19,000 --> 00:40:23,000 να είναι ίσο με ό, τι ο χρήστης πληκτρολογήσει στο εσωτερικό του πεδίου κειμένου. 751 00:40:23,000 --> 00:40:26,000 Η επόμενη γραμμή εδώ είναι απλά μια μέθοδος που είμαι καλώντας 752 00:40:26,000 --> 00:40:29,000 στο πεδίο κειμένου που λέει ότι θέλω να κρύψετε το πληκτρολόγιο. 753 00:40:29,000 --> 00:40:33,000 Αυτή είναι μόνο η αυθαίρετη μέθοδος που επέλεξε η Apple. 754 00:40:33,000 --> 00:40:38,000 >> Και πάλι, πριν έκανα κάτι που είχα να συνδέσετε τα πάντα, έτσι ήρθα για πρώτη φορά εδώ. 755 00:40:38,000 --> 00:40:42,000 Από την άποψη μου ελεγκτή σύρετε πάνω στο πλαίσιο κειμένου. 756 00:40:42,000 --> 00:40:46,000 I αφήσει να πάει, και μπορώ να δω εδώ που μπορώ να κάνω αυτή την ιδιότητα πεδίο κειμένου 757 00:40:46,000 --> 00:40:49,000 δεδομένου ότι εδώ στον ελεγκτή άποψη που έχω ορίσει ένα ακίνητο 758 00:40:49,000 --> 00:40:52,000 αυτό είναι ένα από IBOutlet ένα πεδίο κειμένου. 759 00:40:52,000 --> 00:40:55,000 Αυτό λέει ότι μπορώ να συνδέσετε μέχρι αυτό το ακίνητο 760 00:40:55,000 --> 00:40:59,000 σε ένα πεδίο κειμένου στο UI μου. 761 00:40:59,000 --> 00:41:03,000 Τώρα, όταν κάνω κλικ αυτό που μπορώ να αρχίσετε να πληκτρολογείτε. 762 00:41:03,000 --> 00:41:06,000 Τώρα αν κάνω κλικ στο κουμπί γίνει αυτό πρόκειται να βάλει φωτιά 763 00:41:06,000 --> 00:41:08,000 ένα γεγονός που μπορώ τώρα να ανταποκριθεί στις. 764 00:41:08,000 --> 00:41:10,000 Δεν χειρισμού συμβάντων. 765 00:41:10,000 --> 00:41:13,000 Αυτό είναι το πώς θα ήθελα απλώς απάντησε σε αυτό το κουμπί γίνεται. 766 00:41:13,000 --> 00:41:15,000 Κάντε νόημα; 767 00:41:15,000 --> 00:41:20,000 >> Αυτό δεν είναι ένα πρότυπο σχέδιο που-ίσως να μην βρείτε ποτέ τον εαυτό σας 768 00:41:20,000 --> 00:41:23,000 δημιουργώντας το δικό σας πρωτόκολλο, αλλά απλά ξέρω ότι μερικοί 769 00:41:23,000 --> 00:41:27,000 διαφορετικά συστατικά iOS εγγραφείτε γεγονότα με διαφορετικούς τρόπους. 770 00:41:27,000 --> 00:41:29,000 Κουμπιά, για παράδειγμα, να χρησιμοποιούν αυτά τα IBActions. 771 00:41:29,000 --> 00:41:32,000 Τα πεδία κειμένου, από την άλλη πλευρά, πρόκειται να χρησιμοποιείτε πληρεξούσιους. 772 00:41:32,000 --> 00:41:36,000 Μπορούμε να δούμε και μπορείτε να δείτε όλα αυτά στο εσωτερικό της τεκμηρίωσης. 773 00:41:36,000 --> 00:41:41,000 Με την ευκαιρία, υπάρχει πραγματικά ένας τόνος των πράγματα UI ενσωματωμένο στο iOS για σας, 774 00:41:41,000 --> 00:41:46,000 Έτσι, για παράδειγμα, ο τρόπος που έκανα και λένε γίνει στην κάτω δεξιά γωνία 775 00:41:46,000 --> 00:41:48,000 είναι Επέλεξα αυτό το πεδίο κειμένου. 776 00:41:48,000 --> 00:41:50,000 Ήρθα εδώ. 777 00:41:50,000 --> 00:41:53,000 I κύλιση κάτω από ένα κομμάτι για να επιστρέψει κλειδί, 778 00:41:53,000 --> 00:41:56,000 και μπορώ να πραγματικά να κάνει αυτό ένα σωρό πράγματα, όπως αν θέλω να πω ότι 779 00:41:56,000 --> 00:42:00,000 κλήσης έκτακτης ανάγκης αντί μπορώ να το κάνουμε αυτό, το οποίο είναι εντελώς τυχαία, 780 00:42:00,000 --> 00:42:02,000 και δεν ξέρω γιατί υπάρχει ένα ενσωματωμένο κουμπί κλήσης έκτακτης ανάγκης, 781 00:42:02,000 --> 00:42:06,000 αλλά υπάρχει, λέει κλήσης έκτακτης ανάγκης σε πολύ μικρά γράμματα. 782 00:42:06,000 --> 00:42:08,000 Ορίστε. 783 00:42:08,000 --> 00:42:12,000 >> Σίγουρα διερευνήσει όλες αυτές τις διαφορετικές επιλογές στο iOS. 784 00:42:12,000 --> 00:42:14,000 Οποιεσδήποτε ερωτήσεις σχετικά με εκπροσώπους; 785 00:42:14,000 --> 00:42:18,000 Και πάλι, μόλις ένα ενδιαφέρον πρότυπο σχεδιασμού που θα πρέπει να γνωρίζουν. 786 00:42:18,000 --> 00:42:22,000 Εντάξει, ας ρίξουμε μια ματιά δίπλα στο τραπέζι τις απόψεις. 787 00:42:22,000 --> 00:42:26,000 Μια προβολή πίνακα είναι ουσιαστικά ο κατάλογος των αντικειμένων που είναι σε όλη τη χώρα σε iOS. 788 00:42:26,000 --> 00:42:29,000 Όταν ρίχνεις μέσα από όλες τις επαφές σας, ψάχνετε στο 789 00:42:29,000 --> 00:42:34,000 τη σύσταση σελίδα, και αυτό το είδος της λίστας των πραγμάτων καλείται προβολή πίνακα. 790 00:42:34,000 --> 00:42:37,000 Εφαρμογή προβολή πίνακα στο iOS είναι αρκετά απλή. 791 00:42:37,000 --> 00:42:41,000 Αντί να κάνουν μια τάξη που κατεβαίνει από την UIViewController 792 00:42:41,000 --> 00:42:44,000 όπως έχουμε κάνει στο παρελθόν απλά πρέπει να πούμε όχι 793 00:42:44,000 --> 00:42:46,000 Πάντα UIViewController δεν θέλω να κάνω, 794 00:42:46,000 --> 00:42:50,000 Λέω πάντα ένα UITableViewController δεν θέλω να κάνω, 795 00:42:50,000 --> 00:42:54,000 έτσι ώστε απλά προσθέτει κάποια επιπλέον πράγματα που είναι εντελώς κάνει για μας. 796 00:42:54,000 --> 00:42:58,000 Πρέπει να κάνουμε πολύ λίγα για να ουσιαστικά να συμπληρώσετε τα κενά στο εσωτερικό του πίνακα. 797 00:42:58,000 --> 00:43:02,000 >> Για να εμφανιστεί ένα τραπέζι που πρέπει να απαντήσετε σε μερικές ερωτήσεις. 798 00:43:02,000 --> 00:43:06,000 Η πρώτη ερώτηση που πρέπει να απαντήσουμε είναι πόσα τμήματα βρίσκονται στο τραπέζι; 799 00:43:06,000 --> 00:43:08,000 Όταν flipping μέσω των επαφών app σας, θα παρατηρήσετε ότι αυτό είναι το είδος του 800 00:43:08,000 --> 00:43:12,000 που διοργανώθηκε από την As, τότε έχετε το Β, και έχετε αυτό το μικρό υπο κεφαλίδα. 801 00:43:12,000 --> 00:43:14,000 Καθένα από αυτά έχει ένα τμήμα που ονομάζεται. 802 00:43:14,000 --> 00:43:16,000 Μπορείτε μπορεί ή δεν μπορεί να χρειαστεί αυτά. 803 00:43:16,000 --> 00:43:19,000 Το πρώτο πράγμα που πρέπει να κάνετε είναι να εφαρμόσει μια μέθοδο 804 00:43:19,000 --> 00:43:22,000 που ονομάζεται tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Που επιστρέφει απλά το πόσα τμήματα που έχετε, 806 00:43:25,000 --> 00:43:29,000 έτσι αυτό θα μπορούσε να πει επιστρέψει ένα, αν έχετε ένα μεγάλο προβολή πίνακα. 807 00:43:29,000 --> 00:43:33,000 Το επόμενο ερώτημα που iOS πρέπει να γνωρίζει είναι πόσες σειρές έχετε; 808 00:43:33,000 --> 00:43:36,000 Για παράδειγμα, είστε ρίχνεις μέσα από μια προβολή πίνακα. 809 00:43:36,000 --> 00:43:39,000 Έχετε ένα σταθερό αριθμό των τραγουδιών που ψάχνετε ή σε ένα σταθερό αριθμό επαφών. 810 00:43:39,000 --> 00:43:41,000 Αν είστε μου, βέβαια, δεν είναι ότι πολλοί, 811 00:43:41,000 --> 00:43:44,000 και έτσι αυτό είναι το πώς iOS ξέρει πόσα κύτταρα για να εμφανιστεί. 812 00:43:44,000 --> 00:43:46,000 >> Και πάλι, αυτό θα μπορούσε να πει κάτι σαν επιστροφή 3. 813 00:43:46,000 --> 00:43:49,000 Προβολή πίνακα μου έχει 3 σειρές. 814 00:43:49,000 --> 00:43:52,000 Τέλος, iOS πρέπει να γνωρίζει τι κάθε κύτταρο μοιάζει, 815 00:43:52,000 --> 00:43:54,000 έτσι αυτό που είναι πραγματικά πρόκειται να κάνετε είναι να καλέσετε τη μέθοδο αυτή εδώ κάτω, 816 00:43:54,000 --> 00:43:57,000 αυτό tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Είναι πρόκειται να καλέσετε τη μέθοδο αυτή σε κάθε κύτταρο στο εσωτερικό του πίνακα σας. 818 00:44:01,000 --> 00:44:03,000 Πώς ξέρω πόσες φορές να το ονομάσουμε; 819 00:44:03,000 --> 00:44:06,000 Λοιπόν, σας το είπα μέσα από τον αριθμό των γραμμών στο τμήμα. 820 00:44:06,000 --> 00:44:08,000 Εμείς πάμε για να καλέσετε αυτό σε κάθε ένα από τα κύτταρά μας, 821 00:44:08,000 --> 00:44:11,000 και μέσα από αυτό είναι όπου μπορείτε να κάνετε πράγματα όπως πραγματικά 822 00:44:11,000 --> 00:44:16,000 ρυθμίσετε το κείμενο ή να σας πω τι μικρό μπλε κουμπί στη δεξιά πλευρά κάνει. 823 00:44:16,000 --> 00:44:19,000 Το σχέδιο για να πάρει αυτά τα κύτταρα, θα πάμε να χρησιμοποιήσετε αυτή τη μέθοδο 824 00:44:19,000 --> 00:44:22,000 που ονομάζεται dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C είναι πραγματικά πολύ καλά γνωστή για την γελοία μήκος των ονομάτων τους μέθοδο, 826 00:44:29,000 --> 00:44:32,000 και αυτό είναι πραγματικά ένα ωραίο παράδειγμα στην περίπτωση σημείο. 827 00:44:32,000 --> 00:44:37,000 Τι αυτή η μέθοδος δεν είναι αυτό ακριβώς λέει θέλω να μου δώσεις ένα κελί. 828 00:44:37,000 --> 00:44:39,000 Ακριβώς ένα πράγμα iOS. 829 00:44:39,000 --> 00:44:41,000 Αν έχετε κάτι σαν 100.000 τραγούδια στο iPod σας 830 00:44:41,000 --> 00:44:45,000 iOS τι δεν θέλετε να κάνετε είναι διαθέσει 100.000 κύτταρα, 831 00:44:45,000 --> 00:44:48,000 γιατί αν είσαι στην κορυφή της λίστας σας, θα πρέπει πραγματικά να εκχωρήσει μνήμη 832 00:44:48,000 --> 00:44:51,000 για το κύτταρο που είναι 99.000 γραμμές προς τα κάτω; 833 00:44:51,000 --> 00:44:55,000 Όχι, γιατί όπως είστε κύλιση μπορείτε να το είδος του διαθέσουν όσο προχωράς. 834 00:44:55,000 --> 00:44:57,000 Αυτό γίνεται για σας. 835 00:44:57,000 --> 00:44:59,000 Δεν χρειάζεται να ανησυχείτε για όλα αυτά τα ηλίθια πράγματα απόδοση. 836 00:44:59,000 --> 00:45:02,000 Το μόνο που λένε είναι να καλέσετε αυτό το dequeueReusableCellWithIdentifier μέθοδο, 837 00:45:02,000 --> 00:45:06,000 και αυτό λέει, εντάξει, αν θα πρέπει να πάω για να δημιουργήσετε ένα νέο τηλέφωνο για σας. 838 00:45:06,000 --> 00:45:09,000 >> Αλλά αν είστε στο κάτω μέρος του πίνακα και έχετε ήδη διατεθεί κάποια κύτταρα 839 00:45:09,000 --> 00:45:12,000 στην κορυφή του πίνακα που δεν είστε πραγματικά πρόκειται να χρειαστεί σύντομα 840 00:45:12,000 --> 00:45:15,000 Πάω να σας δώσω ένα από τα πίσω αντί να τη διαθέσει ένα νέο, 841 00:45:15,000 --> 00:45:17,000 και έτσι αυτό είναι ένα ωραίο ανησυχία απόδοσης. 842 00:45:17,000 --> 00:45:21,000 Δεν χρειάζεται να διαθέσουν τον εαυτό σας στα κύτταρα. 843 00:45:21,000 --> 00:45:23,000 Αυτό πρόκειται να σας δώσει πίσω ένα κελί. 844 00:45:23,000 --> 00:45:25,000 Είναι πρόκειται να σας επιστρέψει ένα αντικείμενο κυττάρων. 845 00:45:25,000 --> 00:45:28,000 Μόλις έχετε το αντικείμενο κυττάρων που μπορείτε να κάνετε πράγματα για αυτό. 846 00:45:28,000 --> 00:45:32,000 Μπορείτε να ρυθμίσετε το κείμενο του κελιού με αυτό το ακίνητο που ονομάζεται ετικέτα κειμένου. 847 00:45:32,000 --> 00:45:36,000 Μπορείτε να προσθέσετε αυτό το βέλος στα δεξιά ή κάποια άλλη τυχαία πράγματα 848 00:45:36,000 --> 00:45:41,000 με αυτή την άλλη ιδιότητα που ονομάζεται accessoryType, και ούτω καθεξής και ούτω καθεξής. 849 00:45:41,000 --> 00:45:46,000 >> Ας ρίξουμε μια ματιά στην πραγματικότητα την εφαρμογή θέα πίνακα. 850 00:45:46,000 --> 00:45:49,000 Όταν δημιούργησα αυτό το έργο 851 00:45:49,000 --> 00:45:53,000 αντί να πει ενιαία αίτηση άποψη που πραγματικά ήρθε εδώ 852 00:45:53,000 --> 00:45:57,000 σε master-λεπτομέρεια εφαρμογής, και έτσι ουσιαστικά αυτό αντιστοιχεί στην εφαρμογή ηλεκτρονικού ταχυδρομείου 853 00:45:57,000 --> 00:46:01,000 για το iPad με την προβολή πίνακα στα αριστερά και στη συνέχεια τα περιεχόμενα στα δεξιά. 854 00:46:01,000 --> 00:46:07,000 Με το iPod ή το iPhone αυτό θα αντιστοιχεί σε μια ενιαία προβολή πίνακα. 855 00:46:07,000 --> 00:46:10,000 Αυτό είναι όπου πήρα μίζα κωδικό μου. 856 00:46:10,000 --> 00:46:13,000 >> Ας ρίξουμε πρώτα μια ματιά στο storyboard. 857 00:46:13,000 --> 00:46:15,000 Όλο αυτό έγινε για μένα, ουσιαστικά δημιουργήθηκε. 858 00:46:15,000 --> 00:46:18,000 Αυτή η μπάρα πλοήγησης μου έδειξε τι ένα κύτταρο παράδειγμα θα μπορούσε να μοιάζει, 859 00:46:18,000 --> 00:46:22,000 και μπορώ να κάντε διπλό κλικ αυτό, αλλάξτε τον τίτλο. 860 00:46:22,000 --> 00:46:25,000 Οποιεσδήποτε άλλες ανησυχίες UI μπορώ να χειριστεί εκεί. 861 00:46:25,000 --> 00:46:27,000 Το αρχείο κεφαλίδας φαίνεται πολύ απλό. 862 00:46:27,000 --> 00:46:30,000 Αντί να λέμε αυτό είναι UIViewController είμαστε τώρα λέγοντας ότι αυτό είναι ένα 863 00:46:30,000 --> 00:46:35,000 TableViewController, έτσι ξέρουμε ότι θέλουμε να καλέσει όλες αυτές τις μεθόδους πίνακα. 864 00:46:35,000 --> 00:46:38,000 Στη συνέχεια θέλω να δημιουργήσω ένα ακίνητο που πρόκειται να εκπροσωπήσει 865 00:46:38,000 --> 00:46:40,000 τα πράγματα μέσα από το τραπέζι μου. 866 00:46:40,000 --> 00:46:43,000 Αυτός ο πίνακας θα εμφανίσει αυθαίρετα 867 00:46:43,000 --> 00:46:46,000 μια λίστα των φρούτων, και γι 'αυτό πρέπει να δημιουργήσουμε κάποια σειρά 868 00:46:46,000 --> 00:46:49,000 στην οποία μπορείτε να εισάγετε τα φρούτα. 869 00:46:49,000 --> 00:46:52,000 Μέσα από το αρχείο της εφαρμογής μου το πρώτο πράγμα που θέλω να κάνω 870 00:46:52,000 --> 00:46:55,000 είναι που θέλω να είμαι σίγουρη ότι η προετοιμασία αυτή την σειρά. 871 00:46:55,000 --> 00:46:58,000 >> Είπα alloc init, δημιούργησε σειρά μου τα φρούτα, 872 00:46:58,000 --> 00:47:03,000 και είμαι προσθέτοντας 4 πράγματα σε αυτό, ένα από τα οποία είναι πολύ πιο αμφιλεγόμενη από την άλλη 3. 873 00:47:03,000 --> 00:47:06,000 Και τώρα έχω ένα πίνακα μεγέθους 4. 874 00:47:06,000 --> 00:47:08,000 Είμαστε το τίναγμα σε CS50. 875 00:47:08,000 --> 00:47:11,000 Έχω τώρα μια σειρά μεγέθους 4. 876 00:47:11,000 --> 00:47:13,000 Τώρα είμαι πρόκειται να αρχίσει να απαντά σε αυτά τα ερωτήματα, και στην πραγματικότητα, 877 00:47:13,000 --> 00:47:16,000 όταν δημιούργησα αυτό το app όλα αυτά είχε ήδη κάνει για μένα. 878 00:47:16,000 --> 00:47:19,000 Δεν είχα να πληκτρολογήσετε τον αριθμό των τμημάτων σε προβολή πίνακα. 879 00:47:19,000 --> 00:47:22,000 Ήταν ήδη εκεί, και είμαι συμπληρώνοντας τα κενά. 880 00:47:22,000 --> 00:47:24,000 Πόσα τμήματα μπορώ να έχω; 881 00:47:24,000 --> 00:47:26,000 Ένα. Όλα γίνονται. 882 00:47:26,000 --> 00:47:28,000 Πόσες σειρές έχω; 883 00:47:28,000 --> 00:47:31,000 Λοιπόν, έχω μία γραμμή για κάθε φρούτο, έτσι αυτή η μέτρηση 884 00:47:31,000 --> 00:47:34,000 είναι μια ιδιότητα του κάθε πίνακα που λέει πόσο μεγάλο είναι αυτό; 885 00:47:34,000 --> 00:47:36,000 Αυτό είναι το πώς πολλές σειρές που έχω. 886 00:47:36,000 --> 00:47:42,000 Τέλος, θέλω να πω τι κάνει κάθε κύτταρο μοιάζει; 887 00:47:42,000 --> 00:47:46,000 Πάω να πω dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Και πάλι, αυτό είχε ήδη γράψει για μένα. 889 00:47:48,000 --> 00:47:51,000 Δεν είχα να κάνω μόνος μου αυτό, και θέλω να πάρω πίσω 890 00:47:51,000 --> 00:47:54,000 αυτό το κύτταρο σε αυτή τη θέση. 891 00:47:54,000 --> 00:47:57,000 Να θυμάστε ότι είμαστε καλώντας την ίδια μέθοδο για κάθε κύτταρο, 892 00:47:57,000 --> 00:48:01,000 και αυτό το επιχείρημα εδώ, αυτό το επιχείρημα indexPath, 893 00:48:01,000 --> 00:48:03,000 λέει ό, τι σειρά είμαι μέσα 894 00:48:03,000 --> 00:48:05,000 Αν πω indexPath.row εδώ κάτω 895 00:48:05,000 --> 00:48:09,000 αυτό θα είναι μηδέν, τότε θα είναι 1, τότε θα είναι 2, και αυτό είναι έτσι γνωρίζω 896 00:48:09,000 --> 00:48:11,000 τι κύτταρο είμαι σήμερα την εμφάνιση. 897 00:48:11,000 --> 00:48:15,000 Θέλω να ρυθμίσετε το κείμενο του κελιού χρησιμοποιώντας αυτή την ιδιότητα Ετικέτακειμένου 898 00:48:15,000 --> 00:48:19,000 να πάει μέσα σειρά φρούτα μου και να πάρει 899 00:48:19,000 --> 00:48:21,000 το αντικείμενο που αντιστοιχεί σε κάθε σειρά. 900 00:48:21,000 --> 00:48:24,000 Εάν αυτό είναι ένα string, είμαι τώρα ρύθμιση 901 00:48:24,000 --> 00:48:28,000 το ακίνητο κείμενο σε μια σειρά. 902 00:48:28,000 --> 00:48:30,000 Μπορώ να κάνω κάτι άλλο. 903 00:48:30,000 --> 00:48:32,000 Μπορώ να εγγραφούν επίσης ένα πρόγραμμα χειρισμού συμβάντων για κάθε ένα από τα κύτταρα, 904 00:48:32,000 --> 00:48:35,000 έτσι όταν πατήσετε το καθένα από αυτά τα κύτταρα 905 00:48:35,000 --> 00:48:39,000 didSelectRowAtIndexPath αυτό, αυτό πρόκειται να κληθούν για μένα, 906 00:48:39,000 --> 00:48:42,000 έτσι απλά με τον ορισμό αυτό μπορώ τώρα να χειριστεί ό, τι συμβαίνει 907 00:48:42,000 --> 00:48:46,000 όταν πατάτε ένα κελί, και πάλι, είμαστε περνώντας στην οποία κελί τρυπήθηκε 908 00:48:46,000 --> 00:48:50,000 έτσι ώστε να μπορούμε να επαναχρησιμοποιούν το ίδιο χειρισμού συμβάντων για όλα τα κύτταρά μας. 909 00:48:50,000 --> 00:48:53,000 >> Και πάλι, αυτό είναι κάτι iOS κάνει για μένα. 910 00:48:53,000 --> 00:48:55,000 Ας εμφανιστεί ένα άλλο ενοχλητικό popup 911 00:48:55,000 --> 00:48:59,000 που λέει απλά θα πάρει κάτι στην περίπτωση που κάτι 912 00:48:59,000 --> 00:49:04,000 πρόκειται να είναι το αντικείμενο σειράς. 913 00:49:04,000 --> 00:49:10,000 Όταν το τρέχω, είμαι πρόκειται να έχουν αυτή την ωραία θέα πίνακα 914 00:49:10,000 --> 00:49:14,000 με μία σειρά για κάθε ένα από αυτά τα φρούτα, και αν ακουμπάτε μια 915 00:49:14,000 --> 00:49:16,000 μου λέει τι συνέβη. 916 00:49:16,000 --> 00:49:21,000 Κάντε νόημα; 917 00:49:21,000 --> 00:49:24,000 Ας οικοδομήσουμε μια λίγο πιο περίπλοκη από μια εφαρμογή, 918 00:49:24,000 --> 00:49:28,000 όσο κάνοντας κλικ διαλέξατε ντομάτα είναι. 919 00:49:28,000 --> 00:49:31,000 Το ωραίο μέρος για την storyboarding 920 00:49:31,000 --> 00:49:35,000 είναι αυτό που είναι, όχι μόνο θα μας βοηθήσει οθόνες σχεδιασμού ξεχωριστά, 921 00:49:35,000 --> 00:49:38,000 αυτό είναι, επίσης, πρόκειται να μας βοηθήσει να δέσει μαζί μας όλο το app, 922 00:49:38,000 --> 00:49:42,000 έτσι ώστε η τελική εφαρμογή θα είναι κτίριο είναι αυτό το ωραίο αθλητικές ειδήσεις αναγνώστη, 923 00:49:42,000 --> 00:49:45,000 και γι 'αυτό πρόκειται να έχει πολλαπλές οθόνες, και γι' αυτό μπορεί πραγματικά να αντιπροσωπεύουν 924 00:49:45,000 --> 00:49:48,000 κάθε μία από αυτές τις πολλαπλές οθόνες για το storyboard, 925 00:49:48,000 --> 00:49:52,000 και εγώ να μεγεθύνετε και να δείτε app μου από ένα υψηλό επίπεδο. 926 00:49:52,000 --> 00:49:55,000 >> Για να δημιουργήσετε ένα νέο στοιχείο στο εσωτερικό του storyboard μου 927 00:49:55,000 --> 00:49:59,000 Είναι πραγματικά απλό εσωτερικό του Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Αν θέλετε να προσθέσετε μια άλλη οθόνη σε αυτό, για παράδειγμα, 929 00:50:01,000 --> 00:50:06,000 Μπορώ πρώτη σμίκρυνση με την πρέζα ζουμ ότι η Apple αγαπά τόσο πολύ, 930 00:50:06,000 --> 00:50:09,000 και κάτω εδώ πριν να ψάξω για ένα κουμπί 931 00:50:09,000 --> 00:50:12,000 και εγώ drag and drop ένα κουμπί 932 00:50:12,000 --> 00:50:15,000 αν θέλετε να δημιουργήσετε μια νέα οθόνη που μπορεί πραγματικά να απλά drag and drop 933 00:50:15,000 --> 00:50:19,000 μια ολόκληρη ελεγκτή άποψη, οπότε αν έχω πάρει αυτό, τραβήξτε πάνω από εδώ, 934 00:50:19,000 --> 00:50:23,000 hey, υπάρχει μια άλλη οθόνη, έτσι και τώρα με το ίδιο αρχείο storyboard 935 00:50:23,000 --> 00:50:26,000 Μπορώ να έχω όλες τις οθόνες στο εσωτερικό του app μου, και μπορώ να σμίκρυνση 936 00:50:26,000 --> 00:50:28,000 και να δούμε πώς αλληλεπιδρούν μεταξύ τους. 937 00:50:28,000 --> 00:50:32,000 Αυτά δεν θα αλληλεπιδρούν ακόμη. 938 00:50:32,000 --> 00:50:36,000 Ο τρόπος με τον οποίο αλληλεπιδρούν οι 2 οθόνες είναι που καθορίζουν τις σχέσεις. 939 00:50:36,000 --> 00:50:39,000 Μπορείτε να πείτε βασικά αυτή την οθόνη, όταν πατήσετε αυτό το κουμπί, 940 00:50:39,000 --> 00:50:42,000 Θέλω να γλιστρήσει πάνω σε αυτή τη νέα οθόνη. 941 00:50:42,000 --> 00:50:44,000 Αυτό σημαίνει ότι υπάρχει αυτό το είδος της σχέσης μεταξύ 942 00:50:44,000 --> 00:50:46,000  η πρώτη οθόνη και η δεύτερη οθόνη. 943 00:50:46,000 --> 00:50:49,000 Θα έχετε ουσιαστικά ένα βέλος από το κουμπί στη δεύτερη οθόνη 944 00:50:49,000 --> 00:50:53,000 λέγοντας ότι όταν πατάτε το κουμπί αυτό είναι που θέλω να πάω. 945 00:50:53,000 --> 00:50:57,000 Ακριβώς όπως έχουμε τον έλεγχο και έσυραν κλικ για να καθορίσει τα καταστήματα 946 00:50:57,000 --> 00:51:01,000 θα πάμε να κάνουμε το ίδιο πράγμα για τον καθορισμό αυτών των segues. 947 00:51:01,000 --> 00:51:05,000 >> Θα δούμε ένα παράδειγμα γι 'αυτό, και πριν τη μετάβαση στην πραγματικότητα 948 00:51:05,000 --> 00:51:08,000 από τη μία οθόνη στην άλλη iOS είναι αρκετά καλό για να καλέσετε τη μέθοδο αυτή 949 00:51:08,000 --> 00:51:11,000 που ονομάζεται prepareForSegue, και αυτό είναι όπου μπορούμε να αρχίσουμε 950 00:51:11,000 --> 00:51:14,000 την αποστολή δεδομένων από τη μία εφαρμογή στην άλλη. 951 00:51:14,000 --> 00:51:17,000 Στο παράδειγμα που είμαστε για να δούμε που θα μας επιτρέψει βασικά 952 00:51:17,000 --> 00:51:20,000 να φιλτράρετε ομάδες μπέιζμπολ πρωταθλήματα και από τμήματα. 953 00:51:20,000 --> 00:51:23,000 Όταν επιλέγετε ένα πρωτάθλημα, για παράδειγμα, θέλω να μετάβαση 954 00:51:23,000 --> 00:51:25,000 στην επόμενη οθόνη μου, όπου μπορώ να εμφανίσει όλα τα τμήματα 955 00:51:25,000 --> 00:51:27,000 σε αυτό το πρωτάθλημα ή όλες τις διαφορετικές ομάδες. 956 00:51:27,000 --> 00:51:31,000 Πρέπει να στείλετε σε αυτή την οθόνη τι ομάδες θα πρέπει να εμφανιστεί. 957 00:51:31,000 --> 00:51:35,000 Για να γίνει αυτό θα πάω να επωφεληθούν από αυτή τη μέθοδο εδώ. 958 00:51:35,000 --> 00:51:39,000 >> Τέλος, μόλις ένα τυχαίο σημείο στο iOS. 959 00:51:39,000 --> 00:51:41,000 Εάν θέλετε να αποθηκεύσετε τα δεδομένα δεν υπάρχει αυτό το πράγμα που ονομάζεται βασικών δεδομένων, 960 00:51:41,000 --> 00:51:44,000 το οποίο είναι πραγματικά το είδος των περίπλοκη για να εργαστεί με. 961 00:51:44,000 --> 00:51:47,000 Μπορείτε επίσης να χρησιμοποιήσετε το SQL για την αποθήκευση δεδομένων, 962 00:51:47,000 --> 00:51:51,000 η οποία, και πάλι, είναι ωραίο, αλλά το είδος της για την πιο σύνθετη πλευρά να συνεργαστεί με, 963 00:51:51,000 --> 00:51:55,000 iOS αλλά υποστηρίζει επίσης αυτά τα πραγματικά δροσερά πράγματα που ονομάζεται λίστες ιδιοκτησίας, 964 00:51:55,000 --> 00:52:00,000 και μια λίστα ακινήτων είναι απλά ένα αρχείο που αντιπροσωπεύει ζεύγη κλειδιών αξία. 965 00:52:00,000 --> 00:52:03,000 Μπορείτε να ορίσετε μια λίστα με τα πλήκτρα, και λέτε αυτό το πλήκτρο θα είναι ένας πίνακας. 966 00:52:03,000 --> 00:52:06,000 Αυτό το κλειδί θα είναι μια σειρά, και ουσιαστικά τίποτα που μπορείτε να κάνετε 967 00:52:06,000 --> 00:52:10,000 σε JSON μπορείτε να το κάνετε μέσα από μια λίστα ακινήτων, 968 00:52:10,000 --> 00:52:14,000 και έτσι αυτό πραγματικά ωραία μας επιτρέπει να εργαστούμε με ορισμένα στοιχεία. 969 00:52:14,000 --> 00:52:18,000 Για παράδειγμα, έχω αυτό το Teams.plist που δημιούργησα. 970 00:52:18,000 --> 00:52:22,000 Δημιούργησα ένα νέο αρχείο plist, και μπορώ να τρυπάνι κάτω. 971 00:52:22,000 --> 00:52:26,000 Αυτό είναι ένα λεξικό, αυτό είναι ένα λεξικό, αυτά είναι χορδές, 972 00:52:26,000 --> 00:52:30,000 και έτσι αυτό είναι ένα ωραίο γραφική αναπαράσταση ενός εγγράφου JSON 973 00:52:30,000 --> 00:52:33,000 ή απλά ένα σύνολο από ζεύγη κλειδιών αξίας, 974 00:52:33,000 --> 00:52:37,000 και έτσι αυτό είναι τα στοιχεία που θα πρέπει να εργάζονται με μέσα του app μου. 975 00:52:37,000 --> 00:52:40,000 >> Ας πρώτα να έρθει εδώ. Έχουμε πολλά περισσότερα αρχεία τώρα. 976 00:52:40,000 --> 00:52:44,000 Αλλά ας πρώτα να έρθει εδώ στον πίνακα διάταξης. 977 00:52:44,000 --> 00:52:48,000 Το storyboard εδώ-αν μπορώ να σμίκρυνση- 978 00:52:48,000 --> 00:52:51,000 μπορούμε τώρα να δούμε ότι αυτή είναι η ροή του app μου. 979 00:52:51,000 --> 00:52:53,000 Είμαι πρώτος πρόκειται να ξεκινήσει σε αυτή την οθόνη. 980 00:52:53,000 --> 00:52:55,000 Πάω να τρυπάνι κάτω σε αυτή την οθόνη, 981 00:52:55,000 --> 00:52:58,000 και Πάω να τρυπάνι κάτω σε αυτή την οθόνη, και μπορούμε να δούμε εδώ ότι αν το είδος του 982 00:52:58,000 --> 00:53:04,000 μετακινήσετε ένα από αυτά που έχουμε γύρω από αυτά τα βέλη που από εδώ και στο εδώ, 983 00:53:04,000 --> 00:53:08,000 και ο τρόπος που τον προσδιορίζει βέλος ήταν αν κάνετε ζουμ σε λίγο, 984 00:53:08,000 --> 00:53:12,000 και αν έρθω σε αυτόν τον ελεγκτή άποψη, 985 00:53:12,000 --> 00:53:16,000 και εδώ είναι ένα κύτταρο, και θέλω να πω ότι όταν πατήσετε ένα κελί 986 00:53:16,000 --> 00:53:18,000 Θέλω να γλιστρήσει πάνω στην άλλη οθόνη. 987 00:53:18,000 --> 00:53:21,000 Μπορώ απλά κρατήστε πατημένο το πλήκτρο ελέγχου, 988 00:53:21,000 --> 00:53:26,000 μετακινηθείτε πάνω από λίγο, κρατήστε πατημένο τον έλεγχο, σύρετε πάνω από αυτό το κελί και να αφήσει να πάει. 989 00:53:26,000 --> 00:53:30,000 >> Και εδώ λέμε ποια είναι η μετάβαση που θέλετε να χρησιμοποιήσετε; 990 00:53:30,000 --> 00:53:32,000 Θέλετε να χρησιμοποιήσετε αυτό το πράγμα διαφάνεια που λέγεται ώθηση; 991 00:53:32,000 --> 00:53:34,000 Θέλετε να γλιστρούν πάνω από το κάτω μέρος; 992 00:53:34,000 --> 00:53:36,000 Που ονομάζεται τροπική. 993 00:53:36,000 --> 00:53:40,000 Και μόλις κάνω κλικ ένα από αυτά, πρόκειται να συντάξει αυτό το βέλος για μένα, 994 00:53:40,000 --> 00:53:44,000 και αυτό σημαίνει ότι έχω πραγματικά χειρισμός τι συμβαίνει όταν πατάω αυτό το κουμπί γραφικά. 995 00:53:44,000 --> 00:53:48,000 Δεν έγραψα κανένα κώδικα πραγματικά να σύρετε από τη μία οθόνη στην επόμενη. 996 00:53:48,000 --> 00:53:51,000 Εγώ αυτό ορίζεται οπτικά μέσα του Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Αν κάνω κλικ σε αυτό το βέλος, μπορούμε να δούμε ότι έδωσα αυτό το πράγμα ένα όνομα. 998 00:53:55,000 --> 00:53:59,000 Κάλεσα το showDivisions, και αυτό είναι έτσι ώστε να μπορώ να ξέρω 999 00:53:59,000 --> 00:54:03,000 τι μετάβαση πρόκειται να συμβεί, και θα δούμε γιατί σε μόλις ένα δευτερόλεπτο. 1000 00:54:03,000 --> 00:54:06,000 Αυτό είναι το πώς έχω ενσύρματο μέχρι τις διαφορετικές οθόνες στο app μου. 1001 00:54:06,000 --> 00:54:09,000 Εάν αυτό ήταν ένα κουμπί, για παράδειγμα, αντί για μία προοπτική πίνακα, 1002 00:54:09,000 --> 00:54:11,000 Θα μπορούσα να ελέγχει κάντε κλικ στο κουμπί, σύρετε πάνω στην επόμενη οθόνη, 1003 00:54:11,000 --> 00:54:16,000 και αυτό είναι το πώς μπορώ να κάνω πλοήγηση με αυτόν τον τρόπο. 1004 00:54:16,000 --> 00:54:19,000 >> Πραγματικά γρήγορα, αν ερχόμαστε στο MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 και πάλι, είμαστε απλά πρόκειται να ορίσετε μια λίστα με τα πράγματα 1006 00:54:22,000 --> 00:54:26,000 που θα εμφανίζεται στην προβολή πίνακα. 1007 00:54:26,000 --> 00:54:29,000 Εδώ λέω θέλω να κάνει αυτό το plist αρχείο, 1008 00:54:29,000 --> 00:54:32,000 και θέλω να το φορτώσετε σε ένα λεξικό, 1009 00:54:32,000 --> 00:54:35,000 και από τη στιγμή που έχουν αυτό το λεξικό, Πάω να απαντήσει αυτές τις ίδιες ερωτήσεις ξανά. 1010 00:54:35,000 --> 00:54:37,000 Εδώ είναι ο αριθμός των τμημάτων. 1011 00:54:37,000 --> 00:54:41,000 Ένας, υπάρχει μία σειρά για κάθε πρωτάθλημα, και το κείμενο της κάθε κύτταρο 1012 00:54:41,000 --> 00:54:46,000 θα πρέπει να είναι είτε το πρώτο, το πρώτο πρωτάθλημα, το δεύτερο πρωτάθλημα, και ούτω καθεξής. 1013 00:54:46,000 --> 00:54:51,000 Τέλος, Πάω να χρησιμοποιήσετε αυτή τη μέθοδο που μόλις είδε ονομάζεται prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 και αυτή είναι η μέθοδος που πρόκειται να απολυθούν όταν κάνω κλικ 1015 00:54:54,000 --> 00:54:57,000 σε μία από αυτές τις γραμμές και συνεπώς ενεργοποίηση εκείνη την μετάβαση 1016 00:54:57,000 --> 00:54:59,000 που έχει συσταθεί με τα βέλη. 1017 00:54:59,000 --> 00:55:02,000 Αυτό λέει ότι μπορώ να έχω πολλαπλούς 1018 00:55:02,000 --> 00:55:05,000 σχέσεις από μια οθόνη στην άλλη. 1019 00:55:05,000 --> 00:55:08,000 Αν έχω 2 κουμπιά και κάθε κουμπί θα σας οδηγήσει σε μια διαφορετική οθόνη 1020 00:55:08,000 --> 00:55:10,000 Πάω να έχουν 2 segues, 1 για κάθε κουμπί. 1021 00:55:10,000 --> 00:55:14,000 Αλλά αυτή prepareForSegue είναι, πάλι, πρόκειται να επαναχρησιμοποιηθούν 1022 00:55:14,000 --> 00:55:17,000 για κάθε μια από τις διαφορετικές σχέσεις, έτσι ώστε να σημαίνει ότι πρέπει ένα τρόπο 1023 00:55:17,000 --> 00:55:21,000 από τον εντοπισμό εάν πατήσετε το πρώτο κουμπί ή πατάτε το δεύτερο κουμπί. 1024 00:55:21,000 --> 00:55:25,000 >> Να θυμάστε, όταν έδωσα ότι segue ένα όνομα, αυτό showDivisions, 1025 00:55:25,000 --> 00:55:29,000 αυτό είναι το πώς εγώ τώρα ξέρω ότι αυτό είναι το segue που είχε ενεργοποιηθεί. 1026 00:55:29,000 --> 00:55:32,000 Το μόνο που θέλω να κάνω είναι που θέλω να πω 1027 00:55:32,000 --> 00:55:35,000 Θέλω να καταλάβω τι ακριβώς χτύπησε, 1028 00:55:35,000 --> 00:55:38,000 και έτσι για να πάρετε αυτό, μπορώ να πω ότι θέλω το indexPath για την επιλεγμένη γραμμή, 1029 00:55:38,000 --> 00:55:42,000 θυμηθείτε το indexPath λέει ακριβώς όπου μόνο κλικ, 1030 00:55:42,000 --> 00:55:47,000 και στη συνέχεια, θέλω να πω ότι θέλω να καταλάβω πού θα πάω. 1031 00:55:47,000 --> 00:55:50,000 Αυτό destinationViewController, αυτό είναι μια ιδιότητα του segue. 1032 00:55:50,000 --> 00:55:53,000 Αυτή είναι η οθόνη Πάω να, 1033 00:55:53,000 --> 00:55:56,000 έτσι ξέρω ότι η οθόνη Πάω να ονομάζεται DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 γιατί δημιουργήθηκε αυτή κατηγορία, 1035 00:55:59,000 --> 00:56:02,000 και έτσι τώρα αν πω d.divisions 1036 00:56:02,000 --> 00:56:06,000 Είμαι ρύθμιση τώρα μια ιδιότητα του ελεγκτή άποψη είμαι έτοιμος να πάει. 1037 00:56:06,000 --> 00:56:10,000 Αυτό είναι το πώς είμαι αποστολή δεδομένων από τη μία οθόνη στην άλλη οθόνη. 1038 00:56:10,000 --> 00:56:13,000 >> Απλά βλέπουν αυτό το DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 μπορείτε να δείτε εδώ ότι στο αρχείο. h 1040 00:56:16,000 --> 00:56:20,000 Είναι εκεί που τμήματα ιδιοκτησίας, και αυτό είναι που είμαι ουσιαστικά τη συμπλήρωση, 1041 00:56:20,000 --> 00:56:25,000 έτσι ώστε να είναι το πώς ξέρω ότι είμαι εμφανίζει τα τμήματα που αντιστοιχούν σε 1042 00:56:25,000 --> 00:56:28,000 το πρωτάθλημα που χτύπησα, και πάλι, 1043 00:56:28,000 --> 00:56:31,000 η πραγματική προβολή πίνακα φαίνεται λίγο πολύ το ίδιο, απλά απαντώντας σε εκείνους 1044 00:56:31,000 --> 00:56:34,000 3 απλές ερωτήσεις, καθώς και τον προσδιορισμό 1045 00:56:34,000 --> 00:56:37,000 τι συμβαίνει όταν μετακινείτε στην επόμενη οθόνη. 1046 00:56:37,000 --> 00:56:40,000 Ακριβώς ένα ζευγάρι από άλλα πράγματα εδώ. 1047 00:56:40,000 --> 00:56:43,000 Θα παρατηρήσετε στην κορυφή εδώ ότι αντί να πει # include 1048 00:56:43,000 --> 00:56:45,000 Είμαι τώρα λέγοντας # εισαγωγή. 1049 00:56:45,000 --> 00:56:47,000 Αυτό είναι μόνο ένα Objective-C πράγμα. 1050 00:56:47,000 --> 00:56:52,000 Η εισαγωγή είναι βασικά ένα καλύτερο έκδοση του περιλαμβάνουν, 1051 00:56:52,000 --> 00:56:57,000 και, για παράδειγμα, πρέπει να ξέρουμε τι αυτή η κατηγορία είναι, 1052 00:56:57,000 --> 00:57:00,000 έτσι δεν μπορώ να πω ακριβώς DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Αν δεν hashtag standardio.c εσωτερικό του. Αρχείο μας γ 1054 00:57:05,000 --> 00:57:07,000 ο compiler δεν είχε ιδέα τι ήταν printf. 1055 00:57:07,000 --> 00:57:12,000 Ομοίως, αν δεν εισάγουν το DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 ο compiler έχει πραγματικά καμία ιδέα για το τι είναι DivisionsViewController. 1057 00:57:16,000 --> 00:57:19,000 Απλά βεβαιωθείτε ότι μέσα από διαφορετικά αρχεία. M σας μπορείτε να βεβαιωθείτε για την εισαγωγή 1058 00:57:19,000 --> 00:57:25,000 τα αντίστοιχα αρχεία. h, έτσι ώστε ο compiler ξέρει τι συμβαίνει. 1059 00:57:25,000 --> 00:57:31,000 >> Τέλος, αυτό που η Apple δεν είναι τελικά εμφανίζει κάποια δεδομένα χρησιμοποιώντας μια προβολή ιστοσελίδων, 1060 00:57:31,000 --> 00:57:35,000 και έτσι μια άποψη διαδίκτυο είναι ένα αντικείμενο στο οποίο μπορείτε να ενσωματώσετε 1061 00:57:35,000 --> 00:57:37,000 ένα μικρό πρόγραμμα περιήγησης στο εσωτερικό του app σας. 1062 00:57:37,000 --> 00:57:40,000 Το μόνο που χρειάζεται να κάνετε είναι να παράσχει μια διεύθυνση URL στο web browser σας, 1063 00:57:40,000 --> 00:57:43,000 έτσι θέλω να πάω να mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 και αυτό είναι το πώς μπορώ να έχω πρόσβαση στην αρχική σελίδα για κάθε ομάδα, 1065 00:57:46,000 --> 00:57:49,000 και έτσι με το πέρασμα σε αυτό το URL 1066 00:57:49,000 --> 00:57:52,000 η προβολή του web μπορεί να εμφανίσει αυτό για μένα, και δεν μπορώ να περιηγηθείτε, 1067 00:57:52,000 --> 00:58:01,000 προσομοιωτή και είναι σε χρήση από εκείνη. 1068 00:58:01,000 --> 00:58:03,000 Τώρα, αυτό προήλθε από plist μου. 1069 00:58:03,000 --> 00:58:07,000 Αν κάνετε κλικ σε αυτό το επίσης ήρθε από plist μου, και αυτό το συρόμενη χειρίστηκε 1070 00:58:07,000 --> 00:58:09,000 με τον καθορισμό αυτών segues. 1071 00:58:09,000 --> 00:58:12,000 Εγώ κλικ σε αυτό και ένα ακόμα, 1072 00:58:12,000 --> 00:58:15,000 και τώρα εδώ είναι UIWebView μου, έτσι ακριβώς όπως ότι 1073 00:58:15,000 --> 00:58:19,000 εδώ είναι η ιστοσελίδα για τη διεύθυνση URL που μόλις ενσωματωμένη, 1074 00:58:19,000 --> 00:58:21,000 και δεν είχα να χειριστεί τίποτα τρελό. 1075 00:58:21,000 --> 00:58:24,000 Αυτό είναι το πώς να εμφανίσει μια ιστοσελίδα. 1076 00:58:24,000 --> 00:58:27,000 Τα πράγματα όπως αυτό το κουμπί πίσω εδώ, επίσης, να μου δοθεί 1077 00:58:27,000 --> 00:58:33,000 εντελώς δωρεάν, επειδή έχω ορίζεται αυτές τις σχέσεις με segues. 1078 00:58:33,000 --> 00:58:37,000 >> Οποιεσδήποτε ερωτήσεις; Ναι. 1079 00:58:37,000 --> 00:58:40,000 [Φοιτητικό] Έτσι, όταν χρησιμοποιείτε alloc, δεν πρέπει ποτέ να δωρεάν τίποτα; 1080 00:58:40,000 --> 00:58:43,000 Ακριβώς, όταν σας καλούν alloc και init δεν χρειάζεται να το απελευθερώσει. 1081 00:58:43,000 --> 00:58:46,000 ΙΟΣ πρόκειται να χειριστεί όλα αυτά για εσάς. 1082 00:58:46,000 --> 00:58:51,000 Είναι υπέροχο, και δεν είστε το σπάσιμο κανένα κανόνα. Ναι. 1083 00:58:51,000 --> 00:58:54,000 [Φοιτητικό] Εάν επρόκειτο να συμπεριλάβει περισσότερες ομάδες που θα μπορούσαν να χωρέσουν στην οθόνη, 1084 00:58:54,000 --> 00:58:58,000 Θα το έχετε αυτόματα μια επιλογή κύλισης, ή είναι ότι κάτι πρέπει να προσθέσετε; 1085 00:58:58,000 --> 00:59:01,000 Ακριβώς, αν είχα περισσότερες ομάδες, για παράδειγμα, αυτομάτως θα χειριστεί 1086 00:59:01,000 --> 00:59:04,000 η κύλιση για μένα, και όλα τα προβλήματα απόδοσης 1087 00:59:04,000 --> 00:59:08,000 με το τεράστιο τραπέζι είναι επίσης αντιμετωπίζονται συνολικά για μένα. 1088 00:59:08,000 --> 00:59:11,000 >> Άλλες ερωτήσεις; 1089 00:59:11,000 --> 00:59:13,000 Όλα του κώδικα αυτού πρόκειται να αναρτηθεί. 1090 00:59:13,000 --> 00:59:16,000 Εμείς το είδος της δυσδιάκριτες για τον κόσμο λίγο πιο μικρές λεπτομέρειες, 1091 00:59:16,000 --> 00:59:19,000 αλλά τα πράγματα όπως τον καθορισμό κάποιες ιδιότητες για την προβολή ιστοσελίδων 1092 00:59:19,000 --> 00:59:22,000 είναι απλά πράγματα που μπορείτε να πάρετε από την περιήγηση τεκμηρίωση της Apple, 1093 00:59:22,000 --> 00:59:24,000 η οποία είναι πραγματικά, πραγματικά όμορφα που ορίζονται. 1094 00:59:24,000 --> 00:59:27,000 Έχουν πολλές εφαρμογές δείγμα και παράδειγμα χρήσεις 1095 00:59:27,000 --> 00:59:34,000 από διαφορετικές API, έτσι σίγουρα μελετήστε αυτούς αν μπορείτε. 1096 00:59:34,000 --> 00:59:36,000 Απλά μερικές χρήσιμες συνδέσεις ίσως να θέλετε να ρίξετε μια ματιά στο. 1097 00:59:36,000 --> 00:59:38,000 Αυτά είναι μερικά εύχρηστους οδηγούς τεκμηρίωσης. 1098 00:59:38,000 --> 00:59:41,000 Οι διευθύνσεις URL είναι τεράστιο, έτσι είναι μικρότερη. 1099 00:59:41,000 --> 00:59:44,000 Το πρώτο είναι η ολόκληρη βιβλιοθήκη εγγράφων. 1100 00:59:44,000 --> 00:59:46,000 Υπάρχει μικρό μπαρ αναζήτηση, οπότε αν ξεκινήσετε το κουμπί πληκτρολόγηση 1101 00:59:46,000 --> 00:59:50,000 θα αρχίσει να σας δίνει όλες τις πληροφορίες σχετικά με όλα τα πράγματα που μπορείτε να κάνετε με ένα κουμπί. 1102 00:59:50,000 --> 00:59:53,000 Έχω περιλαμβάνονται επίσης την Table View Οδηγός προγραμματισμού. 1103 00:59:53,000 --> 00:59:56,000 Χειρίζεται τις απόψεις πίνακα σε πολύ περισσότερες λεπτομέρειες, 1104 00:59:56,000 --> 01:00:00,000 πώς να κάνουμε τα πράγματα όπως προσθέτουν δυναμικά κύτταρα ή κύτταρα να επεξεργαστείτε ή να τα καταργήσετε. 1105 01:00:00,000 --> 01:00:02,000 >> Υπάρχει πολλές εφαρμογές δείγμα από την Apple που θα σας δείξει πώς να το κάνουμε αυτό, 1106 01:00:02,000 --> 01:00:05,000 και, τέλος, αυτό το τελευταίο είναι οι κατευθυντήριες γραμμές για τα Ανθρώπινα Διασύνδεσης, 1107 01:00:05,000 --> 01:00:09,000 και αυτό είναι βασικά κάποια συζήτηση της UI συστατικά, 1108 01:00:09,000 --> 01:00:12,000 τα πράγματα όπως δεν κάνουν ένα κουμπί που είναι 4 από 4 pixels pixels. 1109 01:00:12,000 --> 01:00:15,000 Αυτό είναι μια κακή ιδέα, και άλλα πράγματα που η Apple θέλει να κάνεις 1110 01:00:15,000 --> 01:00:18,000 να ενθαρρύνει τον καλό σχεδιασμό. 1111 01:00:18,000 --> 01:00:23,000 >> Οι τελευταίες ερωτήσεις πριν τελειώσει; 1112 01:00:23,000 --> 01:00:27,000 Εντάξει, σίγουρα αισθάνονται ελεύθεροι να-εργαζόμαστε πρόκειται να έχουν ειδικές ετικέτες Συζητήστε. 1113 01:00:27,000 --> 01:00:30,000 Θα έχουμε μια iOS ένα, έτσι σίγουρα αισθάνονται ελεύθεροι να χρησιμοποιούν αυτό. 1114 01:00:30,000 --> 01:00:34,000 Αν θέλετε να εργαστείτε με τους συμμαθητές σας για τα έργα 1115 01:00:34,000 --> 01:00:37,000 ή να βοηθήσει να καταλάβω κάποια πράγματα τυχαία iOS 1116 01:00:37,000 --> 01:00:40,000 διστάσετε να μου e-mail, και σίγουρα να λάβουν γνώση όλων των σε απευθείας σύνδεση κώδικα, επειδή 1117 01:00:40,000 --> 01:00:43,000 μόνο προς το συμφέρον του χρόνου έχουμε το είδος της δυσδιάκριτες για τον κόσμο της πιο 1118 01:00:43,000 --> 01:00:45,000 πιο λεπτομερειακή λεπτομέρειες των πραγμάτων. 1119 01:00:45,000 --> 01:00:47,000 Αλλά αν όχι, τότε καλή τύχη σε έργα iOS σας, και ελπίζω να έχουμε 1120 01:00:47,000 --> 01:00:53,000 μια μεγάλη εισροή των εφαρμογών στο App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]