Tianyu LIU: Γεια σου, πώς είναι πάει ο καθένας; Και αυτό είναι το iOS App Ο προγραμματισμός του στόχου γ σεμιναρίου. Και το όνομά μου είναι Tianyu Liu. Είμαι μια junior Lowell τώρα, επικέντρωση στην επιστήμη των υπολογιστών. Έτσι, σε αυτό το σεμινάριο είμαι πρόκειται να σας διδάξει παιδιά λίγο για το πώς να κάνει μια εφαρμογή. Yay, ενθουσιάζονται για αυτό. Έτσι, πριν αρχίσουμε ακόμη και για καταδύσεις στην πραγματική πλευρά του προγραμματισμού, ας πραγματικά γρήγορα μιλάμε για γιατί μπορεί να θέλετε να οικοδομήσουμε μια iOS app; Γιατί είναι το iOS τόσο φοβερό; Έτσι, το πρώτο πρόβλημα, το πρώτο πράγμα που είναι αρκετά φοβερό για μας, ειδικά ως CS50 σπουδαστής, είναι ότι το iOS χρησιμοποιεί Στόχος Γ Λοιπόν, υπάρχει μια νέα γλώσσα που ονομάζεται Swift, αλλά εμείς δεν πρόκειται να χρησιμοποιήσετε ότι σε αυτό το σεμινάριο. Αν σας ενδιαφέρει σε Swift, εκεί είναι μια ανεξάρτητη σεμινάριο γι 'αυτό. Αλλά Στόχος C είναι βασικά υπερσύνολο του Γ Σημασία ότι όλα όσα χρησιμοποιείτε σε C μπορεί να να μεταφραστεί σε Objective C πολύ εύκολα. Όπως μπορείτε να δείτε στη συνέχεια, ότι πράγματι υπάρχουν μερικές πολύ βασική σύνταξη, είναι βασικά ακριβώς το ίδιο, C και του Στόχου Γ Έτσι, αφού έχετε πάρει CS50 μέχρι αυτό το μέτρο, που ήδη γνωρίζουν Στόχος Γ, τουλάχιστον 40%. Επίσης, η Apple έχει μια πραγματικά ισχυρή API για iOS. Υπάρχουν πολλά πραγματικά τρελό πράγματα που μπορείτε να κάνετε με αυτό. Ένας εκ των οποίων είναι κάποιος στην πραγματικότητα δημιούργησε ένα iOS app για τον έλεγχο των αυτοκινήτων, η οποία είναι αρκετά ενδιαφέρουσα. Πιθανώς ένα ελικόπτερο είναι πιο συναρπαστικό. Αλλά αυτό είναι πόσο ισχυρό ΥΠ API μπορεί να είναι. Και όπως μπορεί να έχετε κατάλαβα τώρα, η υπερχείλιση είναι πιθανώς ένα από τα Οι πιο σημαντικές online πηγές στη διάθεσή σας. Και καλά νέα, για κάθε μόνο πρόβλημα που μπορείτε ενδεχομένως σκεφτείτε ενώ το κτίριο σας τελικό σχέδιο στο πλαίσιο του στόχου C, είναι πιθανό μια απάντηση υπερχείλιση στοίβας. Είναι απλά φοβερό. Εκτός από αυτό, iOS είναι πραγματικά μια πλατφόρμα όπου μπορείτε να φτάσετε ένα τεράστιο ακροατήριο με λίγη προσπάθεια. Δεν είναι όπως το Android, όπου όλα είναι πολύ κατακερματισμένη. Όλα iOS είναι ενιαία. Και εφ 'όσον μπορείτε να δημιουργήσετε μια εφαρμογή για το iPhone, Μπορείτε πολύ εύκολα να λιμένα ότι στο iPad, iPad mini, ή διαφορετικά μεγέθη iPhone. Όλα αυτά είναι πολύ βολικό. Και είναι ακριβώς πραγματικά καλό για εντυπωσιάζοντας τους φίλους σας. Μπορείτε να κρατήσετε μόνο ένα iPhone και πείτε στο φίλο σας hey, αυτό είναι το app που κάνω. Μπορείτε να το κάνετε αυτό για κάθε desktop εφαρμογές, το οποίο είναι ωραίο. Εντάξει, τώρα ας πάρει πραγματικά στη γλώσσα του Στόχου Γ Γιατί λοιπόν να μην αρχίσουμε με κάποια πραγματικά βασική σύνταξη. Όπως ανέφερα και πριν Στόχος Γ Είναι βασικά ένα υπερσύνολο του C. Έτσι, πολλοί βασική σύνταξη είναι πράγματι ακριβώς το ίδιο. Δηλώνοντας μια μεταβλητή και την προσθήκη δύο μεταβλητές μαζί είναι ακριβώς όπως έχουμε κάνει στο Mario. Τίποτα νέο εδώ. Ομοίως, ο ένοικος για βρόχο και την κατάσταση είναι επίσης η ίδια. Μπορείτε να κάνετε ένα για το βρόχο, όπως ακριβώς Οι έκανε σε ένα Mario [δεν ακούγεται]. Και μπορείτε να κάνετε προϋποθέσεις όπως ακριβώς ό, τι έχουν κάνει σε προηγούμενες σειρές p σας. Ωστόσο, Objective C δεν είναι εντελώς C, και υπάρχει κάτι που είναι το είδος της παράξενο γι 'αυτό. Το πρώτο είναι ότι όταν είστε κάνει προγραμματισμού C, που συνήθως ονομάζουμε περιλαμβάνουν και στη συνέχεια ένα όνομα της βιβλιοθήκης. Αλλά σε Objective C καλείτε εκείνη την εισαγωγή. Βασικά λέγοντας λειτουργικότητα, απλά διαφορετικά ονόματα. Και οι χορδές είναι πραγματικά λίγο παράξενο. Μπορείτε να δείτε ότι το πρώτο πράγμα που είναι το είδος της παράξενο είναι ότι έχετε μια αρκετά weird-- sorry-- έχετε ένα αρκετά περίεργο NS εγγραφείτε εδώ. Και το δεύτερο πράγμα αυτό είναι το είδος της παράξενο είναι έχετε ένα σύμβολο πριν πραγματικά δηλώνοντας το string. Έτσι, το σύμβολο σημαίνει βασικά ότι ένα string δεν είναι μόνο μια κλωστή, στην πραγματικότητα είναι ένα αντικείμενο. Εμείς πάμε για να εξηγήσει ότι αργότερα, ώστε να μην κάνουμε πανικός αν δεν το κάνετε καταλαβαίνουν τι σημαίνει αυτό. Και η εκτύπωση στην κονσόλα είναι λίγο διαφορετική, διότι σε C καλούμε printf, αλλά σε Objective C καλούμε [δεν ακούγεται]. Ίσως να αναρωτιέστε τι είναι αυτό. Αυτό είναι βασικά printf, απλά μια διαφορετική γλώσσα. Ακριβώς το ίδιο χρήση, ακριβώς η ίδια λειτουργικότητα. Λοιπόν αποδεικνύεται ότι Στόχος Γ πραγματικότητα έχει ένα ns πρόθεμα σχεδόν τα πάντα, κάθε βασικός τύπος δεδομένων, NSString, nsarray, nsdictionary. Ο λόγος είναι ότι η NS αντιπροσωπεύει πραγματικά για το επόμενο βήμα, η οποία είναι μια εταιρεία που Ο Steve Jobs έχει ιδρύσει, η οποία είναι μια εταιρεία όπου η Στόχος γλώσσα C γεννιέται. Έτσι, αυτό είναι βασικά παράδοση. Ξέρω ότι είναι λίγο Περίεργο, αλλά είναι η Apple. Έτσι, κάτι που είναι ακόμα πιο περίεργα από ότι είναι μια δήλωση της συνάρτησης. Αυτό είναι πολύ διαφορετικό από ό, τι εμείς δείτε σε C, γιατί εδώ πραγματικά δεν μοιάζει πια C. Τι here-- έχουν από το τρόπος αυτό δεν είναι ένα σημείο σφαίρα, Αυτό είναι ένα αρνητικό πρόσημο. Έχετε αρνητικό πρόσημο παρένθεση άκυρη και, στη συνέχεια, το όνομα της συνάρτησης. Ας πούμε αν είμαστε έχουν Γεια σας κόσμο, τότε ο τύπος επιστροφής θα είναι άκυρα επειδή επιστρέφουμε τίποτα. Τι γίνεται πραγματικά παράξενο είναι ότι όταν είστε έχει περισσότερες από μία παράμετρο περνώντας σε μια ίδια λειτουργία που θα είναι πραγματικά περίεργο, όπως φαίνεται εδώ. Έχουμε ένα όνομα μεθόδου, καλείται να addInt [δεν ακούγεται] και είμαστε διέρχεται μία παράμετρο. Αλλά μετά από αυτό, έχουμε Περισσότερα Όνομα κλήση μεθόδου με. Και μετά με μας περνάτε Η δεύτερη παράμετρος. Αυτό είναι πραγματικά ένα λίγο παράξενο, αλλά όλες αυτές οι δηλώσεις λειτουργία ακολουθούν το ίδιο πρότυπο με αυτό. Έχουμε το σύμβολο του μείον για να αρχίσει με. Το αρνητικό πρόσημο θα μπορούσε να είναι ένα θετικό πρόσημο μερικές φορές με βάση το είδος της μεθόδου είναι αυτό. Η μέθοδος είναι βασικά ένα άλλο όνομα για τη λειτουργία. Και θα πάμε να εξηγούν ότι αργότερα, όταν μιλάμε για το αντικείμενο προγραμματισμό. Μπορείτε πρώτα να προσδιορίσει την επιστροφή πληκτρολογήστε μέσα στις παρενθέσεις, μετά από την οποία προέρχεται το όνομα της μεθόδου. Θα περνάτε μια παράμετρο. Και αν έχετε περισσότερες παραμέτρους θα πρέπει να επεκτείνει το όνομα της μεθόδου και ουσιαστικά να γράψετε κάτι περισσότερο εδώ. Θα μπορούσε να είναι οτιδήποτε θέλετε. Στην περίπτωσή μας είναι με. Αλλά θα μπορούσατε να πείτε τέλος, ή, ή, ή abc πλήρες μπαρ, ό, τι θέλετε. Και στη συνέχεια, μετά από αυτό είστε περνώντας παράμετρος b. Αυτό είναι ένα πραγματικά περίεργο σύμβαση, αλλά είμαστε πρόκειται να δούμε γιατί η Apple ήθελε για να το κάνουμε αυτό πολύ γρήγορα. Λοιπόν, πώς μπορώ να καλέσετε τη λειτουργία; Η κλήση των λειτουργιών του στόχου C είναι επίσης διαφορετική από το C. Στην πραγματικότητα, καλώντας ένα λειτουργία στο πλαίσιο του στόχου C είναι περισσότερο σαν να μιλάμε σε κάποιον. Εδώ έχουμε τον εαυτό, η οποία ονομάζεται ένα αντικείμενο. Είσαι βασικά λέει ο αντιρρήσεις εαυτό για να πει "Hello World!" Αυτός είναι ο τρόπος για να καλέσετε τη λειτουργία. Ένα αντικείμενο και ένα όνομα μεθόδου σε συνδυασμό με το άλλο. Και αυτό είναι όπου το παράξενο επέκταση για το όνομα της μεθόδου έρχεται πραγματικά στο παιχνίδι. Ας δούμε το δεύτερο παράδειγμα. Εμείς απλά ορίζεται μια μέθοδο που ονομάζεται addInt με μπλα μπλα μπλα. Έτσι, σε αυτή την περίπτωση, όταν καλείς ότι η ειδική [? μήνυμα;] πρόκειται να μοιάζουν με τον εαυτό addInt: 10 με: 2. Ακούγεται σαν αγγλικά. Αν και η λειτουργία δήλωση της συνάρτησης είναι παράξενο, το σημείο του στόχου C μέθοδος μοτίβο δήλωση, είναι ότι όταν καλείτε η λειτουργία ή η μέθοδος θα ακούγεται σαν πραγματική αγγλικά. Γι 'αυτό είναι πολύ έξυπνο Μόλις φτάσετε σε αυτό. Ειδικά στην περίπτωση αυτή, όπου μπορείτε βασικά βλέπουμε ότι το όνομα της συνάρτησης είναι είδος της τεκμηρίωσης ίδια. Δεν χρειάζεται οποιαδήποτε περισσότερες εξηγήσεις για να δείτε τι ακριβώς συμβαίνει, τι ακριβώς μία παράμετρο που κάνει. Πηγαίνοντας πέρα ​​από αυτό, ας μιλήσουμε λίγο bit για αντικειμενοστραφή προγραμματισμό. Αντικειμενοστρεφής προγραμματισμός είναι Μία από τις θεμελιώδεις προγραμματισμού τεχνικές ή μοτίβα που είναι χρησιμοποιείται από το στόχο Γ Στόχος Γ καλείται Στόχος Γ, δεν C, για ένα πραγματικά καλό λόγο. Έτσι, πριν φτάσουμε σε Σύνταξη Στόχος Γ, Ας πραγματικά γρήγορα δούμε τι ακριβώς είναι ένα αντικείμενο. Πιθανώς Έχουμε κάνει κάτι σαν αντικείμενο πριν, η οποία καλείται η struct όταν είστε την εφαρμογή από ένα δέντρο ή μια συνδεδεμένη λίστα ή [? δοκιμάσετε. ?] Έτσι, είναι ουσιαστικά σαν ένα struct, αλλά είναι πολύ πιο ισχυρό από αυτό. Ένα αντικείμενο έχει μεθόδους και ιδιότητες. Οι μέθοδοι είναι βασικά λειτουργίες. Βασικά, οι λειτουργίες ότι ένα ειδικό για ένα συγκεκριμένο αντικείμενο. Και οι ιδιότητες είναι βασικά η πεδίο που καθορίζετε στο struct. Έτσι, για κάθε μεμονωμένο αντικείμενο έχουμε κάποιο ακίνητο ότι έχει κάποιες μεταβλητές που είναι ειδικά για το αντικείμενο. Και έχουμε κάποιες λειτουργίες που είναι επίσης ειδικό στο αντικείμενο. Και οι λειτουργίες ονομάζονται μέθοδοι και οι μεταβλητές που ονομάζονται ιδιότητες. Είναι ακριβώς ένα φανταχτερό όνομα. Ενώ γεγονός που, κάθε άποψη βλέπετε ενώ ανοίγετε ένα iOS app, ας πούμε το Twitter ή το Facebook, κάθε άποψη που βλέπετε είναι ένα αντικείμενο. Και ακόμα και ολόκληρο το app είναι ένα αντικείμενο για να αρχίσει με. Πολύ ενδιαφέρουσα ιδέα. Και γιατί θέλουμε αντικείμενο προγραμματισμό; Έτσι, μπορείτε να φανταστείτε ότι όταν πρόγραμμα παίρνει αρκετά περίπλοκο. Ας πούμε όταν είστε την εφαρμογή σκακιέρα, η λογική πρόκειται να να είναι πραγματικά περίπλοκη. Έχετε 36 διαφορετικά κομμάτια, έτσι ώστε αν θέλετε να γράψετε τη λογική για όλους 36 διαφορετικά κομμάτια στο σκάκι, ότι πρόκειται να είναι ένα πολύ διαφορετικές συναρτήσεις και μεταβλητές. Είναι ένα μεγάλο πρόβλημα. Και κατά πάσα πιθανότητα θα πάμε να γράψει ένα διαφορετική μέθοδο ή διαφορετική λειτουργία για κάθε κομμάτι ακριβώς ελέγχουν τι κάνουν. Αλλά αν το κάνετε αντικειμενοστραφή προγραμματισμό, όλα από αυτά τα κομμάτια μπορεί να αντληθεί σε ένα ενιαίο αντικείμενο. Και το αντικείμενο θα έχουν κάποια κοινά ιδιότητες, όπως το είδος του κομματιού είναι αυτό; Τι χρώμα είναι αυτό; Πώς μπορεί να κινηθεί; Και με αυτόν τον τρόπο έχετε πολύ απλοποιηθεί η λογική της. Γι 'αυτό είναι απλά ένα πραγματικά καλό τρόπο να κάνουν πολύπλοκα προγράμματα, και ιεραρχική σχέση εντός του προγράμματος, είναι πολύ απλή. Όπως θα πάμε να δούμε γιατί πολύ γρήγορα, όταν Θα κάνουμε programming-- όταν στην πραγματικότητα είμαστε κάνει έναν κωδικό S προγραμματισμού συνεδρία αργότερα. Λοιπόν, εκτός από αυτό, αντικειμενοστραφής προγραμματισμός είναι απλώς ένα πολύ διασκεδαστικό. Πήρατε να σχεδιάσετε το δικό σας αντικείμενο. Πήρατε να σχεδιάσετε τι κάνει μοιάζει με τον εαυτό σας. Δεν υπάρχει σωστή απάντηση σε αυτό. Και είναι απολύτως ενδιαφέρον. Έτσι, σε αντικειμενοστραφή προγραμματισμό, δύο θεμελιώδεις έννοιες θα είναι της τάξης και παράδειγμα. Μια κατηγορία είναι βασικά ένα πρότυπο για το αντικείμενο. Και ένα παράδειγμα είναι βασικά ένα συγκεκριμένο αντικείμενο. Ας πούμε ότι έχετε κάνει ένα cookie. Σε αυτήν την περίπτωση, κάθε cookie που πραγματικά να καταλήξετε με πρόκειται να είναι ένα αντικείμενο. Αλλά η πλάκα μπισκότο που χρησιμοποιείτε για να ψήνουν όλα τα μπισκότα θα είναι μια τάξη. Μια κατηγορία είναι ουσιαστικά ένα πρότυπο. Και το παράδειγμα θα είναι ένας συγκεκριμένος αντικείμενο που δημιουργείται από τον κλάδο αυτό. Και θα δημιουργηθεί μια εμφάνιση με βάση τη δήλωση της κατηγορίας, όπως θα δούμε στη συνέχεια διαφάνειες. Ας κάνουν πραγματικά μια πραγματικά γρήγορο παράδειγμα [δεν ακούγεται]. Ας πούμε ότι είμαστε δηλώνοντας ένα αντικείμενο για μια γάτα. Το αντικείμενο πρέπει να have-- η κατηγορία γάτα θα πρέπει να έχουν κάποιες ιδιότητες και μεθόδους. Τι είδους ιδιότητες θα πρέπει να τα τάξη have-- πρέπει η γάτα να έχει; Για παράδειγμα, το χρώμα, την ηλικία και τη φυλή, εκείνοι θα είναι μεταβλητές που είναι συγκεκριμένες για κάθε γάτα. Και αυτά είναι μερικά πράγματα που χρησιμοποιούμε για να περιγράψουμε μια γάτα. Τι είδους μέθοδος, ή τι μπορεί να κάνει μια γάτα; Μερικά γρήγορα παραδείγματα θα κυνηγήσει ποντίκι, τρώνε ψάρι ή απλά νιαούρισμα. Αυτό είναι ένα πραγματικά γρήγορο παράδειγμα της κατηγορίας της γάτας. Και μια πολύ ειδική αντικείμενο γάτα θα είναι μια γάτα όπου ορίζουμε το το χρώμα, την ηλικία και τη φυλή. Σε αυτή την περίπτωση, το αντικείμενο μας είναι δεν είναι πλέον μια τάξη πια. Θα αντιγράψετε το πρότυπο από την τάξη και ορίζουμε κάθε συγκεκριμένη πληροφορία για το συγκεκριμένο αντικείμενο ώστε να είναι ανεξάρτητος. Και όταν καλείς μια μέθοδος εντός ενός αντικειμένου, απλά καλέστε νιαούρισμα στο αντικείμενο, η οποία είναι η γάτα που μόλις δημιουργήσατε. Μάλλον θα εκτυπώσετε κάτι σαν "Hello World! Meow. " Αρκετά χαριτωμένο. Εντάξει, ας μπει σε κάποια λεπτομέρειες και να δούμε τι ακριβώς κάνει αυτό μεταφράζονται σε ύπαρξη iOS προγραμματισμό. Έτσι, στο iOS προγραμματισμό κάθε μεμονωμένο τάξη θα υλοποιηθεί σε δύο αρχεία. Ένα αρχείο είναι εδώ, το οποίο ονομάζεται διασύνδεση. Ένα άλλο αρχείο είναι εδώ, το οποίο ονομάζεται η εφαρμογή. Τυπικά η διεπαφή θα έχουν extension.h όπως έχουμε δει στις βιβλιοθήκες C. Και το αρχείο της εφαρμογής είναι πρόκειται να έχει extension.n. Είναι κάπως περίεργο. Αλλά σημαίνει .Ν πράγματι .c, δεν υπάρχει θεμελιώδης διαφορά ανάμεσα σε εκείνους δύο. Έτσι, σε αυτή την περίπτωση, μπορούμε να δούμε ότι είμαστε δηλώνοντας διεπαφή, Cat: αντικείμενο. Αυτό ονομάζεται κληρονομικότητα. Είμαστε ουσιαστικά κληρονομεί το κλάση γάτα από την κατηγορία αντικειμένου. Έτσι κάθε ακίνητο και μια μέθοδο που ήταν προηγουμένως ορίζεται στην κλάση αντικειμένου θα οριστεί αυτόματα σε μια κατηγορία γάτα καθώς και. Επιπλέον προς αυτό, ορίζουμε το χρώμα, φυλή, την ηλικία και, τρεις μεταβλητές. Αυτό φαίνεται πραγματικά σαν κάτι που έχετε κάνει πριν. Μοιάζει με struct. Αυτό είναι βασικά η σύνταξη για δήλωση struct, και ότι είναι απόλυτα σωστή. Και επειδή ανέφερα και πριν, η διαφορά ένα struct και ένα αντικείμενο, ένα από τα θεμελιώδεις διαφορές είναι ότι ένα αντικείμενο έχει μέθοδο, ενώ ένα struct έχει μόνο μεταβλητές. Έτσι ώστε εκτός από τις ιδιότητες ή μεταβλητές που έχουμε δημιουργήσει για το αντικείμενο, ορίζουμε κάποια μέθοδο. Ας πούμε απλά ότι εδώ έχουμε δύο μεθόδους, το ένα είναι νιαούρισμα, ένα άλλο είναι κυνηγητό ποντίκι. Εμείς μάλλον θέλουν να περνάει από το παραμέτρων με βάση την προηγούμενη μέθοδο μας μοτίβο δήλωση. Θέλετε πιθανώς να είναι περνώντας το ποντίκι. Και θα θελήσετε πιθανώς να επιστρέψει μια σημασιοδοτικών bool αν η γάτα σας έχει επιτυχώς έπιασε το ποντίκι ή όχι. Πρόκειται για τη διεπαφή, αλλά μπορούμε βλέπουμε ότι η διεπαφή πραγματικά δεν κάνει τίποτα. Λέει απλώς ένα πρόγραμμα τι exists-- τι υπάρχει στην κατηγορία γάτα. Έτσι, προκειμένου για την πρόγραμμα για να κάνει κάτι, πρέπει να έχουμε τα αρχεία της εφαρμογής. Μέχρι εδώ, το πρώτο πράγμα που κάνουμε είναι προφανώς εισάγουμε το περιβάλλον. Αφού εισάγουμε το περιβάλλον, ορίζουμε τη μέθοδο. Ας πούμε εδώ νιαούρισμα απλά θα εκτυπώσετε "Hello World!" στην κονσόλα. Και μετά την εφαρμογή αρχείο, είμαστε λίγο πολύ γίνεται. Αυτό είναι βασικά μια κατηγορία δήλωση για μία κατηγορία. Μέχρι τώρα η ερώτηση γίνεται, πώς μπορείτε να δηλώσετε μια μεταβλητή; Ο τρόπος που χρησιμοποιείτε μια τάξη για να δημιουργήσετε ένα αντικείμενο του στόχου C είναι γραμμένο εδώ. Μπορείτε πρώτα να προσδιορίσει ότι αυτό είναι ένας δείκτης γάτα, γιατί κάθε αντικείμενο του στόχου C τελικά υλοποιηθεί ως ένα δείκτη. Και σας καλούν την τάξη, τους καλούν ως αΐΐοο, η οποία είναι βασικά malloc, λέει το λειτουργικό σύστημα που χρειάζεται λίγο χώρο μνήμης για αυτό το αντικείμενο. Μετά από αυτό έχετε ένα αντικείμενο ήδη και απλά να γίνει η προετοιμασία. Αυτό είναι ακριβώς σύμβασης. Ξέρω ότι είναι λίγο παράξενο, αλλά Αυτό είναι στην πραγματικότητα το πώς η Apple κάνει πράγματα. Εκχώρηση ιδιότητες πραγματικά αρκετά απλή. Είναι πολύ παρόμοια με τι κάνεις όταν είστε ανάθεση κάποια συγκεκριμένη πεδίο στο εσωτερικό του struct. Απλά έχουν την μεταβλητή , την ονομασία της ιδιοκτησίας, και να ορίσετε μια συγκεκριμένη αξία. Και κλήση μιας μεθόδου είναι πολύ παρόμοια. Η κλήση μέθοδος είναι βασικά αυτό που μιλώ για για να καλέσει οποιαδήποτε μέθοδο του Στόχου Γ Είσαι πέρασμα ενός αντικειμένου, σε περίπτωση αυτή πρόκειται να είναι myCat, και είστε περνώντας το όνομα της μεθόδου. Όπως και αν μιλάτε με το αντικείμενο, myCat, που θα πρέπει να νιαούρισμα. Είναι αρκετά ενδιαφέρον. Μετά από αυτό, υπάρχει ένα πιο ουσιαστικό πρότυπο σχεδιασμού ότι πρέπει να μιλήσουμε για πριν πάρει την πραγματική S Κωδικός. Αυτή πρότυπο σχέδιο ονομάζεται οδηγούμενο από τα γεγονότα προγραμματισμού. Αυτό είναι επίσης πιθανώς ένα από τα πιο θεμελιώδεις ιδέες στο iOS προγραμματισμού. Έτσι, ίσως δεν ξέρω τι ακριβώς είναι ο προγραμματισμός οδηγούμενο από τα γεγονότα, αλλά δεν είναι πραγματικά τόσο τρομακτικό. Λοιπόν, στην πραγματικότητα, έχετε ήδη κάνει αυτό πριν. Αυτή είναι μία από τις γραμμές που έχετε πιθανώς ήδη γράψει στην τελευταία [δεν ακούγεται] του CS50, google.maps.event.addListener (δείκτης, "Κλικ", λειτουργία () {}) :. Με την κλήση αυτή τη γραμμή σας κατ 'ουσίαν, λέει ο υπολογιστής ότι κάθε φορά που η εκδήλωση που ονομάζεται "Κλικ" συμβαίνει στο δείκτη, χρησιμοποιήσετε αυτή τη λειτουργία. Αυτό είναι πολύ διαφορετικό από τι κάνετε στο mario.c. Σε mario.c μπορείτε απλά να εκτελέσετε το πρόγραμμα μια φορά, σας δίνει μια έξοδο, και τελειώσατε. Αυτά είναι περίπου όπως ένα προγράμματα πυροβολισμό. Περιπτώσει, τα προγράμματα με γνώμονα είναι πολύ, πολύ διαφορετική. Ας φανταστούμε, αν το Facebook είναι ένα πρόγραμμα βολή δεν είναι πραγματικά καλό. Απλά πηγαίνετε στο Facebook μια φορά και αυτό είναι όλο. Αυτό σας δίνει κάποια έξοδος και ποτέ δεν το πήρε πίσω. Ποτέ δεν πήρε τίποτα περισσότερο. Μέχρι εδώ, ειδικά το πρότυπο που χρησιμοποιούμε είναι οδηγούμενο από τα γεγονότα, έτσι ώστε να κάθε λειτουργία θα να αλιευθεί με βάση ό, τι γεγονός έχει συμβεί. Για παράδειγμα, αν έχουμε ένα κουμπί και εμείς καθορίζουμε ότι κάθε φορά που κάνετε κλικ στο κουμπί, καλέσετε τη λειτουργία που ονομάζεται "Hello World!" Με αυτόν τον τρόπο μπορούμε πραγματικά διαχειριστούν την λογική λειτουργία ρέουν σε ένα ιδιαίτερα ευέλικτο τρόπο. Ο χρήστης μπορεί να κάνει ή να καλέσετε μια συνάρτηση που έχει ήδη συγκληθεί. Είναι εντελώς βασίζεται σε αυτό που κάνουν οι χρήστες. Έτσι μπορούμε να δούμε ότι αυτό είναι στην πραγματικότητα πολύ καλύτερα από ό, τι mario.c. Και τα καλά νέα είναι ότι είναι στην πραγματικότητα δεν είναι μια νέα ιδέα. Εσείς έχετε ήδη κάνει ότι κατά το τελευταίο πρόβλημα που. Έτσι, στο πλαίσιο του στόχου C υπάρχουν τρία διαφορετικά διαγράμματα για την εκδήλωση με γνώμονα τον προγραμματισμό. Το πρώτο διάγραμμα είναι που ονομάζεται ενέργεια στόχου, όπου μπορείτε να δεσμεύσει ένα κουμπί Τύπου με κάποια λειτουργία. Ας πούμε απλά, κάθε φορά που κάνετε κλικ κάποια κουμπί, σας καλούν κάποια λειτουργία. Αυτό είναι πολύ απλή δράση στόχου. Το δεύτερο είναι στην πραγματικότητα η πιο δύσκολη, αυτό λέγεται αντιπροσωπεία σχετικά με το πρωτόκολλο. Εμείς πάμε για να εξηγήσει ότι με μεγάλη λεπτομέρεια αργότερα. Και ο τρίτος τρόπος είναι η ειδοποίηση. Αυτό δεν είναι πραγματικά πολύ σημαντικό όσον αφορά όπως είμαστε ενδιαφερόμενο, επειδή η ευκαιρία ότι θα πάμε να χρησιμοποιήσετε την κοινοποίηση στο τελικό έργο σας είναι αρκετά χαμηλό. Έτσι θα πάμε να παραλείψετε αυτό το μέρος. Και θα πάμε να βουτήξει σε αντιπροσωπεία σχετικά με το πρωτόκολλο. Λοιπόν, τι ακριβώς είναι ένα πρωτόκολλο; Ή τι ακριβώς είναι μια αντιπροσωπεία; Ας μιλήσουμε για το πρωτόκολλο για να αρχίσει με. Πρωτόκολλα δεν είναι τίποτα, αλλά τα γεγονότα. Αλλά αυτά τα γεγονότα δοθεί σας από την Apple για να αρχίσει με. Για παράδειγμα, δεν είμαι εντελώς βέβαιος πως πολλοί από εσάς αγόρια χρησιμοποιούν την αρχική της Apple Εφαρμογή ηλεκτρονικού ταχυδρομείου ή μια επαφή, αλλά κάθε φορά που θα διατρέξετε το τραπέζι και πατήστε το συγκεκριμένο κελί στο τραπέζι, αυτό είναι ένα γεγονός. Και αν θέλετε να κάνετε Αυτό το γεγονός από τον εαυτό σας, στην πραγματικότητα είναι λίγο δύσκολο. Έτσι, η Apple έχει, δεδομένου ότι ακόμη και σε σας έτσι ώστε να μπορείτε απλά να χρησιμοποιήσετε άμεσα Η εκδήλωση για να κάνουμε κάτι για τη δική σας. Τα πρωτόκολλα είναι στην πραγματικότητα πραγματικά, πραγματικά χρησιμοποιούνται ευρέως του Στόχου Γ Καλά στην Πράγματι, κάθε εφαρμογή έχει κάτι τράβηξε την εφαρμογή των συνέδρων. Μέσα από λεπτό είναι όλα τα πρωτόκολλα για τη φόρτωση της εφαρμογής. Ας πούμε ότι υπάρχει μια εκδήλωση για την εφαρμογή έκανε φορτίο. Λοιπόν, τι θα πρέπει να συμβεί αφού έχετε δημιούργησε μια εφαρμογή, αφού ανοίξετε την εφαρμογή, αφού κλείσετε το app, ή μετά βάλετε το iPhone για να κοιμηθεί. Αυτά είναι όλα τα γεγονότα που έχει έχουν ήδη δοθεί σε σας. Και αρχικά στο εσωτερικό αυτών των σωματιδίων δεν θα υπάρξει καμία εφαρμογή. Η Apple μόλις σας είπα ότι αυτή τη λειτουργία θα συμβεί όταν κάποιο γεγονός που συμβαίνει, αλλά τι κάνεις με αυτό λειτουργία είναι εντελώς μέχρι σας. Αντιπροσωπεία είναι βασικά λέει την κατηγορία ότι θα πρέπει να χειριστεί αυτά τα πρωτόκολλα. Είναι λίγο σύγχυση, αλλά θα είναι πολύ σαφέστερη όταν κάνουμε Οι κωδικοί s σε δράση. Αντιπροσωπεία σχετικά με το πρωτόκολλο είναι στην πραγματικότητα μια εξαιρετικά ανθεκτικό μηχανισμό, υπό την έννοια ότι αν κάνουμε αντιπροσωπεία σε μια συγκεκριμένη τάξη, μπορούμε να χειριστεί ουσιαστικά όλα τα είδη των εκδηλώσεων χρησιμοποιώντας οποιαδήποτε κατηγορία που έχουμε, πολύ βολικό εργαλείο. Έτσι, ένα γρήγορο παράδειγμα για αντιπροσωπεία σχετικά με το πρωτόκολλο θα είναι αυτό που μόλις μίλησα. Αυτό το πρωτόκολλο ειδικά καλείται TableView [δεν ακούγεται] επιλέξτε ρόλο σε [? δείκτης?] [? παρελθόν. ?] Έτσι, αυτό το ένα γεγονός που θα μπορούσε να πιαστεί όταν πραγματικά χτυπήστε σε ένα συγκεκριμένο κυττάρων σε TableView σας, ας πούμε στο e-mail σας ή στις επαφές της εφαρμογής σας. Μέσα σε μια λειτουργία ήταν εκεί αρχικά να μην κάνουμε τίποτα. Η λειτουργία δεν κάνει τίποτα από προεπιλογή. Αλλά μπορείτε να καθορίσετε τι κάνει η λειτουργία, δεδομένου τι θέλετε από την εφαρμογή σας. Πολύ βολικό εργαλείο. Και με όλα αυτά που Τούτου λεχθέντος, εγώ βασικά καλύπτουν κάποια πολύ βασική σύνταξη και θεμελιώδης ιδέα για το στόχο Γ προγραμματισμού, και μπορούμε να κάνουμε κάποια κωδικός s. Πολύ πιο συναρπαστικό. Έτσι ο κώδικας του είναι στην πραγματικότητα μια λίγο συντριπτική όταν το ανοίγετε για πρώτη φορά. Μια γρήγορη σημείωση, οπότε αν έχετε θέλουν να κάνουν το iOS ανάπτυξη, Σας το συνιστώ να έχετε ένα Mac. Επειδή κάνει iOS ανάπτυξης Windows είναι πραγματικά, πραγματικά σκληρά. Είναι εφικτό, αλλά είναι πολύ δύσκολο. Και σίγουρα κάνει δεν θέλετε να χρησιμοποιήσετε g επεξεργαστείτε. Έτσι, σε s κώδικα που έχουμε πολλές διαφορετικές περιοχές. Όταν ανοίγετε για πρώτη φορά μέχρι ο κώδικας του θα δείτε μια περιοχή πλοήγησης, που βασικά σας δείχνει όλα τα αρχεία που είναι το τρέχον έργο σας. Έχετε μια περιοχή της γραμμής εργαλείων, η οποία βασικά διαχείριση θέα, ή κάποια μικρή γρήγορη εργαλεία για s ίδιο τον κώδικα. Και αυτή είναι η πραγματική έκταση του επεξεργαστή. Αυτή η περιοχή είναι πολύ παρόμοια g επεξεργασία, αλλά πολύ καλύτερα από ό, τι g επεξεργαστείτε. Και σε αυτή την δεξιά περιοχή, είναι ονομάζεται βοηθητικό χώρο. Η περιοχή γίνεται πολύ βολικό όταν είστε δημιουργία διεπαφής ή προσδιορίζοντας μερικές γρήγορες ρυθμίσεις για την εφαρμογή σας. Και ο τελευταίος τομέας είναι η αποσφαλμάτωση. Η περιοχή αυτή περιλαμβάνει την κονσόλα. Έτσι, κάθε φορά που λέτε printf, ή nslog στην περίπτωσή μας, όλα τα αποτελέσματα σας πρόκειται να εκτυπωθεί εδώ. Εντάξει; Υποθέτω ότι μπορούμε πραγματικά να κάνουμε γρήγορα ένα παράδειγμα για το iOS προγραμματισμού. Και ας ανοίξουμε πραγματικά μέχρι ο κώδικας του. Έτσι, κάθε φορά που θα ανοίξει ο κώδικας του, είναι πρόκειται να δείξει κάτι τέτοιο. Δεν πρόκειται να σας ρωτήσω Τι θέλετε να κάνετε; Θέλετε να ξεκινήσετε κάτι τυχαία, μια παιδική χαρά, βασικά σας μπορεί να δοκιμάσει μόνο κώδικα χωρίς πραγματικά δέσμευση για οποιαδήποτε εφαρμογή. Θέλετε να δημιουργήσετε ένα νέο έργο; Ή μήπως θέλετε να συνεχίσετε εργάζονται για το υφιστάμενο έργο; Στην περίπτωσή μας θα πάμε για να δημιουργήσετε ένα νέο έργο. Γι 'αυτό είναι πολύ ωραίο, το S κώδικας έχει ήδη πραγματικότητα Σας δίνονται ορισμένα πρότυπα για τη δημιουργία αντικειμένων. Αν θέλετε να κάνετε ένα παιχνίδι, κωδικός έχει στην πραγματικότητα ένα πρότυπο παιχνίδι για εσάς, έχει σελίδα based εφαρμογές, καρτέλα based εφαρμογή. Σε αυτή την περίπτωση, θα πάμε να κάνουμε κάτι πολύ απλό, και θα πάμε να χρησιμοποιήσετε ένα ενιαία εφαρμογή άποψη. Μετά από αυτό ακριβώς τι θέλετε να καλέσετε το προϊόν σας, και ποιο είναι το όνομα σας, τι είναι το αναγνωριστικό σας, και Ποια γλώσσα χρησιμοποιείτε. Εδώ δεν θέλουμε να ελέγχει τη χρήση βασικών στοιχείων. Βασικά στοιχεία είναι βασικά μια databasing iOS. Αν κάνετε Βασικών Δεδομένων, s κώδικας πρόκειται να καθορίσει μια πολύ πιο περίπλοκη μαθήματα για σας. Έτσι για να κρατήσει τα πάντα απλά, είμαστε ακριβώς πρόκειται να κάνει χωρίς Βασικών Δεδομένων αυτή τη στιγμή. Το πρόβλημα θα πάμε να είναι χρησιμοποιείτε είναι that-- το πρόβλημα θα πάμε να δημιουργήσει είναι ότι εμείς βασικά θέλουν να εισάγουν Mario από C σε μια iOS app. Έτσι, ας την ονομάσουμε ότι ο Mario-iOS. Φυσικά θα καθορίσετε τι θέλετε να βάλετε στο έργο σας. Και εκεί θα πάμε. Έτσι, αυτό είναι λίγο συντριπτική, αλλά αυτό είναι πραγματικά αυτό που μόλις είδα στις διαφάνειες. Και η πρώτη περιοχή που βλέπουμε τώρα είναι βασικά διαμόρφωση του έργου. Έτσι, ό, τι θέλετε να κάνετε του έργου, το είδος της συσκευής, ας πούμε το είδος της συσκευής θέλετε η εφαρμογή σας να εμφανίζονται; Είναι το iPhone, το iPad ή καθολική; Έτσι ο προσανατολισμός της συσκευής, όλα αυτά τα πράγματα. Δεν είναι πολύ σημαντική, αλλά θα μπορούσε να είναι, αλλά αυτό Είναι ένα μέρος όπου μπορείτε να συσταθεί του έργου σας, αν πραγματικά θέλουν να αναπτύξουν στο κατάστημα της Apple. Εντάξει, ας δούμε κάτι που είναι μέσα μας κώδικα. Ας πάμε μέσα από τον πλοηγό αρχείων. Και αυτά είναι όλα τα αρχεία που έχουν ήδη ήρθε με το πρότυπο, πολύ ωραία. Έτσι, όταν κάνετε κλικ σε ένα από αυτά Αυτό είναι τι μοιάζει. Πολύ παρόμοια με g επεξεργαστείτε. Αλλά μπορείτε να δείτε ότι το τονισμό σύνταξης είναι πιθανώς λίγο καλύτερο. Και αυτό είναι στην πραγματικότητα πολύ πιο ισχυρή από ό, ζ μοντάζ. Και μπορείτε να αυτόματη συμπλήρωση πολλά πράγματα για σας, όπως θα δούμε πολύ γρήγορα. Ας ανοίξουμε την περιοχή εντοπισμού σφαλμάτων, καθώς και. Εντάξει, όπως μπορούμε να δούμε, η κονσόλα είναι ακριβώς εδώ. Αυτό είναι ό, τι θα πάμε να δούμε πού είστε σε printf ή nsloging κάτι. Έτσι, χωρίς άλλη καθυστέρηση, ας πραγματικότητα συγκεντρώνουν το app και να δούμε τι θα συμβεί. Ένα βασικό χαρακτηριστικό για ο κώδικας του, είναι ότι ο κωδικός s έρχεται με μια προσομοίωση το iPhone. Έτσι, δεν χρειάζεται να έχουν μια iPhone για να δοκιμάσετε το έργο σας, s κώδικας μπορεί να προσομοιώσει ότι για σας, όπως μπορούμε να δούμε τώρα. Είναι πολύ ωραίο. Πήρε πολύ λίγο λίγο χρόνο για να μεταγλωττίσετε και ουσιαστικά έχουμε ένα άδειο εφαρμογή, η οποία στην πραγματικότητα δεν κάνει τίποτα. Αλλά συγκεφαλαιώνει. Είναι αρκετά φοβερό. Είναι πολύ καλύτερα από ό, C, ε; Εντάξει, τότε ας προσπαθήστε να προσθέσω κάτι. Ένα αρχείο που είναι λίγο παράξενο εδώ ονομάζεται storyboard. Αυτό είναι πράγματι μια μεγάλη, φοβερό χαρακτηριστικό για s κώδικα. Επειδή σε s κώδικα, μπορείτε πραγματικά να σύρετε and drop τα στοιχεία πάνω στο περιβάλλον και θα δείξει κατευθείαν επάνω. Ας το δοκιμάσουμε. Έχουμε ρίξει μια ετικέτα εδώ, "Hello World !!!" Μπορούμε να το κέντρο αυτό. Αξίζει να το δεις. Τώρα ας τρέχει αυτή την προσομοίωση στάση. Εδώ έχουμε "Hello World !!!" Εμείς δεν κάνουμε καν κωδικοποίηση ακόμα. Τι στο καλό συμβαίνει; Αυτό είναι πόσο ισχυρό Interface Builder μπορεί να είναι. Κάποιος είπε ακόμη ότι μπορείτε πιθανώς μόνο ολοκληρώσει μια εφαρμογή χωρίς γραπτή πιθανώς χιλιάδες γραμμές κώδικα απλά με τη χρήση του Builder Interface. Αλλά δεν είναι πιθανόν ο καλύτερος τρόπος για να το κάνουμε. Τώρα ας πραγματικά πιάσουμε κωδικοποίησης. Έτσι, η δομή του αρχείου Είναι πραγματικά πολύ ενδιαφέρον γιατί, όπως μπορείτε να δείτε, υπάρχουν δεν είναι η κύρια λειτουργία οπουδήποτε. Βλέπεις; Όπως αναφέραμε και πριν, μπορείτε να δείτε ότι αυτό είναι ένα αρχείο εφαρμογής για μια συγκεκριμένη κατηγορία. Αλλά δεν υπάρχει καμία κύρια πουθενά. Λοιπόν, πού είναι ο κύριος; Στην πραγματικότητα, υπάρχει ένα κύριο, αλλά η κύριος είναι πραγματικά κρυμμένο από σας. Το κύριο είναι εδώ. Αυτό μου θυμίζει. Έτσι, βασικά, τι iOS κάνει μέσα στον κεντρικό είναι ότι κάθε φορά που είναι κύριος ονομάζεται, το οποίο είναι βασικά κάθε φορά που η εφαρμογή εκτελείται, αυτό δημιουργεί ένα αντικείμενο που ονομάζεται AppDelegate. Όπως ανέφερα και πριν, το σύνολο app είναι πραγματικά ένα αντικείμενο από μόνη της. Έτσι, με αυτόν τον τρόπο, βασικά η iOS app λέει ο compiler Εντάξει, θα πάω να δημιουργήσουν ένα προϊόν που ονομάζεται AppDelegate, και ότι πρόκειται να είναι το app μου. Έτσι, θα πρέπει να πάτε μέσω αυτής της AppDelegate και να δούμε τι αυτός ο τύπος κάνει. Η δουλειά μου έχει κάνει για μένα. Και σε AppDelegate μπορείτε να δείτε ότι υπάρχουν κάποια πραγματικά περίεργο λειτουργίες, Καλά στην πραγματικότητα μεθόδους, ότι Η Apple έχει ήδη δώσει. Ποιες είναι αυτές; Αυτά είναι πραγματικά απλά πρωτόκολλα ότι μιλούσα για. Έτσι, αυτά είναι γεγονότα που η Apple σας έχει δοθεί για να αρχίσει με. Δεν υπάρχει τίποτα σε ορισμένες των λειτουργιών τώρα, αλλά αν θέλουμε να προετοιμαστεί κάτι για το app μας πριν μπουν στην εμφάνιση κάθε άποψη, το κάνουμε αυτό εδώ. Μπορείτε να διαβάσετε μόνο το όνομα και υποθέτω Η εκδήλωση είναι πραγματικά πολύ σαφής. Μέχρι τώρα η κύρια δημιούργησε ένα αντικείμενο για AppDelegate. Και τι AppDelegate πρόκειται να κάνει είναι στην πραγματικότητα κρύβεται επίσης από εσάς. Η AppDelegate πρόκειται να αρχίσει φόρτωση του αποθέματος ViewController. Έτσι είναι βασικά πρόκειται να ξεκινήσει φόρτωση όλες τις απόψεις που έχετε και μόνο καθιστούν τη θέα με βάση την ιεραρχία. Έτσι, σε αυτή την περίπτωση έχουμε μόνο μία άποψη, η οποία είναι εδώ. Έτσι, αυτή είναι η μόνη άποψη ότι πρόκειται να κληθεί. Η λογική ViewController είναι ακριβώς εδώ. Αυτός είναι ο κωδικός που πράγματι ελέγχει την άποψη που μόλις είδαμε. Εντάξει, ας κάνουμε κάτι εδώ. Έτσι viewDidLoad ακούγεται σαν ένα γεγονός, όταν στην πραγματικότητα αυτό είναι επίσης ένας εκπρόσωπος, Αυτό είναι επίσης ένα πρωτόκολλο. Έτσι, ανεξάρτητα από την άποψη είναι φορτωμένο, πάντα μέσα στη συνάρτηση θα ονομάζεται. Σε αυτή την περίπτωση θα πρέπει να δείτε το "Hello Tianyu! "Αν τρέξουμε το πρόγραμμα. Είναι να πάρει λίγο αργή κατάρτιση storyboard αρχεία. Λοιπόν πράγματι, μπορούμε να δούμε μια έξοδο για αυτό. Είναι αρκετά δροσερό. Τώρα ας κάνουν πραγματικά Mario. Πάω να καθορίσει το λειτουργεί πολύ γρήγορα. marioWithLevels: αποτελέσματα (int) επίπεδο. Εντάξει, αυτό είναι πραγματικά το φοβερό χαρακτηριστικό του s αυτόματη συμπλήρωση κώδικα. Έτσι, όταν γράφετε για και πληκτρολογήστε εισέλθουν, έχει ήδη παραιτηθεί από το πρότυπο για σας, το οποίο είναι αρκετά δροσερό. Αυτό θα πρέπει να δούμε πραγματικά γνωστά σε σας παιδιά. Συγγνώμη, αυτό είναι δικό μου λάθος. Εντάξει, δροσερό. Αυτή η λογική θα πρέπει να δούμε πραγματικά εξοικειωμένοι για σας παιδιά, ειδικά μόλις Mario. Αλλά θα εμφανίσει το εξής να η κονσόλα κάθε φορά, γιατί θέλουμε να κρατήσουμε κάπως κομμάτι του τι είμαστε εκτύπωση. Εμείς πάμε για να χρησιμοποιήσετε το προκύπτει κάπως αργότερα, για να εμφανιστεί το Εκτύπωση έξω ως αποτέλεσμα για τον χρήστη. Έτσι, αντί να είμαστε μόνο nslogging τα πάντα, την οποία είμαστε πάντα αποθήκευση σε ένα αποτέλεσμα κλήση της συνάρτησης, αλλά η λογική είναι ακριβώς η ίδια. Αφού αυτό, έχουμε τελειώσει απλά να εκτυπώσετε τα αποτελέσματά μας. Και εδώ αντί να τα εκτυπώνει έξω μου όνομα, θα πάμε να καλέσετε μια συνάρτηση. Ας δούμε τι θα συμβεί. Ωχ, προφανώς. Έχουμε ένα ωραίο μικρή πυραμίδα από εδώ. Αυτό είναι βασικά C, είμαστε απλά χειρισμό όπου μπορείτε να καλέσετε μια συνάρτηση και πώς μια λειτουργία μοιάζουν. Δεν υπάρχει τίποτα διαφορετικό. Αλλά αυτό είναι πραγματικά δεν είναι πολύ συναρπαστικό εδώ, γιατί εμείς δεν βλέπουμε τίποτα από το iPhone app. Έτσι, εάν έχετε πραγματικά ένα iPhone app-- εάν έχετε πραγματικά Mario iOS δεξιά τώρα, εσείς δεν πρόκειται για να δούμε κάτι που να έχει τίποτα να κάνει με τον Mario, επειδή όλες αυτές οι έξοδοι σε μια κονσόλα είναι κρυμμένα από το χρήστη. Αυτό είναι ό, τι βλέπεις, η οποία είναι "Hello World !!!" Δεν είναι καλό. Τώρα ας προσπαθήσουμε να κάνουν το χρήστη να δει τι ακριβώς είμαστε εκτύπωση. Γι 'αυτό και δεν χρειάζεται να ονομάσει πια. Ας προσπαθήσουμε και να καταλάβω κάτι άλλο που θα μπορούσε να είναι χρήσιμη. Υπάρχει πράγματι ένα στοιχείο που ονομάζεται πεδίο κειμένου, το οποίο θα μπορούσε είναι πολύ χρήσιμο για εμάς. Εμφανίζει βασικά μια περιοχή του κειμένου που μπορεί να επεξεργαστεί. Έτσι ώστε να φαίνεται πραγματικά χρήσιμη. Τώρα ας το drag and drop αυτό. Πω πω, έχουμε μια προβολή κειμένου κατά την άποψή μας, πολύ φανταχτερό. Αυτό είναι ένα μικρό κομμάτι πάρα πολύ μεγάλο. Ας το κάνουμε μικρότερα. Βάλτε το σε κέντρο. Κάντε το μικρότερο, καθώς και. Τώρα έχουμε μια προβολή κειμένου, το οποίο θα μπορούσαμε να χρησιμοποιηθεί για την εμφάνιση τελικό αποτέλεσμα μας. Αλλά τώρα είναι Σίγουρα δεν πρόκειται να λειτουργήσει επειδή υπάρχει ο no-- ViewController εμείς απλά ορίζεται δεν γνωρίζει ότι υπάρχει μια προβολή κειμένου εκεί έξω. Γι 'αυτό και πρέπει με κάποιο τρόπο να συνδέουν την προβολή κειμένου που μόλις δημιουργήθηκε με την κατηγορία ότι έχει ήδη έρθει μαζί μας. Ο τρόπος που το κάνουμε αυτό είναι πραγματικά πολύ μαγικό. Έτσι ανοίξει storyboard. Υπάρχει μια ειδική [δεν ακούγεται] που ονομάζεται [? βοηθός;] [δεν ακούγεται]. Όταν κάνετε κλικ σε αυτό, είναι πρόκειται να ανοίξει δύο αρχεία. Ένας είναι μια κατηγορία και ο άλλος είναι μία αντίστοιχη όψη για αυτό. Είναι πολύ, πολύ χρήσιμη. Και ας πηγαίνει μόνο μέσα από το αρχείο .h. Ελέγχου, αυτό είναι [δεν ακούγεται] λογική. Πατήστε Control και σύρετε το προβολή κειμένου σε δήλωση. Εμείς πάμε για να καλέσετε αυτόν τον outputView. Συνδέστε. Έτσι, εδώ έχουμε κηρυχθεί μια νέα ιδιοκτησίας για την κατηγορία ViewController μας. Και η νέα ιδιοκτησία είναι μόνο η προβολή κειμένου έχουμε δημιουργήσει στο κτίριο διεπαφής. Έτσι, με αυτόν τον τρόπο θα μπορούσαμε να πρόσβαση σε όλα τα δεδομένα και να χειριστούν ό, τι είναι μέσα η άποψη της παραγωγής, το οποίο είναι φοβερό. Έτσι, στην πραγματικότητα μας κώδικα, ας κάνουμε κάτι με αυτό. Έτσι, αυτή τη φορά, όταν είμαστε όπως εκτύπωση έξω από το τελικό αποτέλεσμα για τον Mario, είμαστε σε τίποτα δεν υλοτομία. Εννοώ θα μπορούσε να κρατήσει η δήλωση υλοτομία. Επιπλέον προς αυτό, Πίσω από την ανάγνωση απλά που δημιουργήθηκε με την άποψη της παραγωγής, η οποία είναι ένα UI TextView που μόλις δημιουργήσαμε. Τώρα ας δούμε τι θα συμβεί. Πω πω. Έχουμε μια πυραμίδα στο app τώρα. Έτσι, ο χρήστης μπορεί να δει παραγωγή μας, διότι έχουμε αντιγράψει την έξοδο από τον κωδικό μας στο περιβάλλον μας. Είναι αρκετά καλό. Δεν είναι πραγματικά ότι συναρπαστικό, επειδή εμείς can-- Όλα τα app που κάνει είναι δείχνει μια πυραμίδα για να σας, και δεν υπάρχει τίποτα που μπορείτε να κάνετε γι 'αυτό. Δεν είναι ιδιαίτερα συναρπαστικό. Έτσι τώρα ας κάνουμε ένα κουμπί ότι θα καθαρίσει τις απόψεις. Φαίνεται ότι ένα κουμπί θα είναι χρήσιμη. Drag and drop. Ένα κουμπί. Κουμπί δύο. Έτσι, όταν κάνουμε κλικ στο αριστερό κουμπί, η θέα θα πρέπει να καθαρίσει. Θα πρέπει να υπάρχει τίποτα στην οθόνη. Και όταν κάνουμε κλικ στο δεξί πλήκτρο, Mario, η άποψη αυτή πρόκειται να εμφανιστεί ξανά. Έτσι, με αυτό τον τρόπο μπορούμε επίσης να κάνουμε το μαγεία πράγματα, τον έλεγχο και σύρετε στη δήλωση της κλάσης στο βοηθός director-- στο βοηθητικό θεατή. Σε αυτή την περίπτωση είμαστε διευκρινίζοντας ότι θα πρέπει να είναι μια δράση. clearMario. Έτσι, εδώ έχουμε ήδη δημιουργήσει μια ενέργεια που ονομάζεται clearMario, η οποία είναι η μέθοδος που θα ονομάζεται κάθε φορά που πατάμε το πλήκτρο CLEAR. Έτσι, στην πραγματικότητα κωδικό μας, ας βάλετε το κείμενο εξόδου και τη θέα εξόδου σε τίποτα, και με αυτόν τον τρόπο θα φαίνεται να είναι σαφής. Εκτός από αυτό, ας δημιουργήσουμε Μια άλλη μέθοδος ονομάζεται runMario. Ω συγγνώμη, ότι δεν θα πρέπει να είναι μια ιδιοκτησία. Εντάξει, που θα πρέπει είναι μια δράση, καθώς και. Και όταν αυτή η λειτουργία είναι ονομάζεται, εμείς απλά τρέχει Mario δέκα. Ας ελπίσουμε ότι θα είναι μια χαρά. Μήπως να το υπολογίσουν; Ναι. Τώρα έχουμε μια άποψη. Έχουμε μια έξοδο. Και ας δούμε τι θα συμβεί. Αυτό πάει. Είναι και πάλι. Έτσι, εδώ έχουμε καθορίσει τι είδους λειτουργία θα κληθούν όταν γράφουμε σε κάτι, όταν πατάμε σε ένα συγκεκριμένο κουμπί. Αυτό είναι βασικά η προγράμματος δράσης στόχος για το συμβάν οδηγείται προγραμματισμού του στόχου Γ Εκτός από αυτό, δεν είναι πολύ συναρπαστικό γιατί δεν μπορούμε πραγματικά να αλλάξει πόσο υψηλή είναι η πυραμίδα θα είναι, οπότε μάλλον θα θέλετε να με κάποιο τρόπο πάρετε μια είσοδο από τον χρήστη και να αλλάξετε το ύψος του πυραμίδα βασίζεται σε ό, τι έξοδο. Έτσι θα πάμε να το κάνουμε αυτό. Έτσι, αυτή τη φορά, όταν λέμε runMario, εμείς όχι μόνο να καλέσει άμεσα τον Mario. Τίτλος αυτού του ατόμου. Εκπρόσωπος. Αυτό είναι πολύ ενδιαφέρουσα. Τι είναι ένα πληρεξούσιο; Πάω να θέσει τον εαυτό εδώ. Και θα πάμε να δούμε τι σημαίνει αυτό αργότερα. Έτσι, εδώ έχουμε ουσιαστικά δημιούργησαν ένα συγκεκριμένη περίπτωση ονομάζεται μια προειδοποίηση UI θέα. Μια άποψη ειδοποίησης UI είναι βασικά αυτό που θα Δείτε κάθε φορά που κάτι σκάει και σας ρωτάει για την είσοδο, σαν τι θα συμβεί όταν προσπαθείτε να αγοράσει κάτι σε ένα κατάστημα app. Εκτός από αυτό, αφού δημιουργήσετε, δείχνουμε μόνο την ειδοποίηση. Εντάξει, ας γρήγορα δοκιμή θα εργάζονται ή όχι. Αυτό είναι πολύ δροσερό. Τώρα ας πραγματικά δημιουργούν ένα πεδίο εισαγωγής για την ειδοποίηση UI. Αυτό είναι το πώς θα το κάνουμε αυτό. Και θα πρέπει να έχουμε μια θέα εισόδου για την καταχώρηση. Πολύ δροσερό. Ας πούμε 10. Δεν κάνει τίποτα σωστά τώρα επειδή η κλήση στην πραγματικότητα δεν άλλαξε για την εκτέλεση του Mario. Έτσι, αυτό έχει γίνει μια μικρή λίγο περίεργο γιατί κάθε φορά που πατάμε ένα κουμπί προς τα κάτω, κάθε φορά που πατήστε ένα κουμπί στην προβολή συναγερμού, κάτι πρέπει να συμβεί, αλλά αυτό δεν θα συμβεί. Πώς μπορούμε να πιάσει αυτό; Πώς ξέρουμε ότι ένας χρήστης απέρριψε την άποψη συναγερμού και έχει ήδη εισέλθει σε μια σειρά, γιατί τώρα τίποτα δεν συμβαίνει πραγματικά. Λοιπόν, μπορεί να έχετε μαντέψει σωστό, αντιπροσωπεία. Έτσι ώστε εκτός από όλα Οι δηλώσεις αυτές, θα πρέπει να προσθέσετε μια νέα αντιπροσωπεία κάλεσε UI άποψη συναγερμού εκπρόσωπος. Έτσι ώστε κάθε αλληλεπίδραση ή συμβάν ότι θα πάμε για να έχουν με την άποψη συναγερμού UI πρόκειται να αντιμετωπιστεί από την τάξη μας. Έτσι ώστε εκτός από αυτό, θα είναι συναγερμού κουμπί άποψη κλικ στο δείκτη. Αυτό έχει επιτευχθεί. Έτσι, στην περίπτωση αυτή έχουμε already-- έτσι έχουμε ανακάλυψε ένα πρωτόκολλο που θα χειριστεί το συμβάν, όταν πατάμε το κουμπί Done στην προβολή συναγερμού. Έτσι, κάθε φορά που έχουμε απορρίψει την θέα σε εγρήγορση, αυτό πρέπει να συμβεί. Επιτρέψτε μου να το δοκιμάσετε απλά πολύ γρήγορα. Λοιπόν πράγματι, έχουμε φτάσει εδώ. Μέχρι εδώ, ό, τι δεν θα πραγματικά να πάρει είναι στην πραγματικότητα πάρετε the-- Έτσι θέλουμε να βγούμε το κείμενο που έχουμε προηγουμένως εισήλθε στην προβολή συναγερμού. Και με βάση το κείμενο, είμαστε Θα εμφανιστεί Mario. Αυτό αποδεικνύεται πολύ γρήγορα αν λειτουργεί πραγματικά ή όχι. Έτσι, στην περίπτωση αυτή, αν εμείς εισόδου, ας πούμε, 10, θα πρέπει να δούμε 10. Πολύ καλό, έχουμε έναν αριθμό εδώ. Είναι αρκετά καλό. Τώρα το τελευταίο βήμα θα be-- Έτσι, η τελευταίο βήμα που πρέπει να κάνουμε τώρα είναι μόνο μια κλήση Mario με επίπεδο βασίζεται στην εισροή ότι έχουμε βάλει σε προβολή συναγερμού. Πρέπει, λοιπόν, να μετατρέψετε Αυτό το string σε iOS. Στατική υπερχείλιση είναι πολύ φοβερό. Και τότε απλά καλέστε τον εαυτό τιμή marioWithLevels. Ας δούμε κατά πόσο αυτή η λειτουργούν πραγματικά ή όχι. Είμαστε ήδη δοθεί μια πυραμίδα. Ας προσπαθήσουμε να αλλάξουμε το ύψος. Αυτό λειτουργεί πραγματικά. Είναι αρκετά δροσερό. Έτσι, ότι τώρα μπορείτε απλά είσοδος οποιαδήποτε τιμή θέλετε. Ας πούμε τέσσερα. Αυτό είναι αρκετά φοβερό. Έτσι, αυτό είναι βασικά ένα πραγματικά γρήγορο παράδειγμα για το πώς να δημιουργήσετε ένα έργο στο s κώδικα και πώς να πραγματικά γρήγορα καλωδίωση μερικά πραγματικά απλή εκδηλώσεις και λειτουργίες. Έτσι, η πηγή θα να θέσει σε απευθείας σύνδεση αργότερα. Έτσι, αν σας ενδιαφέρει για το πώς λειτουργεί το iOS Mario, Πάω να θέσει ακριβώς το ίδιο έργων στην ιστοσελίδα του CS50 αργότερα. Είμαστε ουσιαστικά γίνεται με την καλοκαίρι, και πριν τελειώσουμε Θέλω απλώς να σας επισημάνω τα παιδιά να μερικά πραγματικά φοβερό πόρους ότι είναι διαθέσιμα στο διαδίκτυο. Προφανώς, η τεκμηρίωση της Apple πρόκειται να είναι πολύ χρήσιμη. Αλλά εκτός από αυτό, εγώ ειδικά προτείνουμε τέσσερις πηγές, τον κωδικό του σχολείου, δεντρόσπιτο, AppCoda και WWDC βίντεο. Κωδικός σχολείο και σπίτι δέντρο είναι δύο σε απευθείας σύνδεση ιστοχώρους εκπαιδευτήρια, η οποία ειδικά επικεντρωθεί στη μηχανική λογισμικού. Ειδικά για τον κωδικό του σχολείου, που έχουν πραγματικά καλό φροντιστήριο για iOS. Αυτό είναι ένα πραγματικά γρήγορο παράδειγμα για αυτό. Στην πραγματικότητα δημιουργούν ένα πραγματικά cute-- εξετάσουμε αυτό το μικρό χαριτωμένο iPhone μάγκα εκεί πέρα, είναι αρκετά φοβερό. Και ο τρόπος που εξηγούν Στόχος Η σύνταξη C είναι απολύτως σαφής. Tree House είναι το ίδιο. Και AppCoda είναι ένα φόρουμ. Είναι πραγματικά ένα blog που τρέχει με ένα πραγματικά έμπειροι Στόχος Γ προγραμματιστής. Και όλα αυτά τα σεμινάρια σε AppCoda είναι αρκετά μικρή και εύκολη στην εφαρμογή, συνιστάται ιδιαίτερα. Και αν είστε προγραμματιστής, σίγουρα να το ελέγξετε πώς τα βίντεο WWDC, όπου μπορείτε να μάθετε για τις τελευταίες προγραμματισμού iOS τεχνικές, APIs και βιβλιοθηκών. Έτσι, αυτό είναι λίγο πολύ αυτό για το σεμινάριο. Σας ευχαριστώ πολύ. Και ελπίζω να έχει τη διασκέδαση δημιουργώντας τη δική σας iOS app.