TIANYU LIU: Hey, wie geht es wird alle? Und das ist die iOS App Programmierung Ziel c Seminar. Und mein Name ist Tianyu Liu. Ich bin ein Lowell junior gerade jetzt, Konzentration in der Informatik. Also in diesem Seminar bin ich werde euch lehren ein wenig darüber, wie Sie eine Anwendung zu machen. Yay, bekommen dafür aufgeregt. Also, bevor wir überhaupt anfangen Tauch in die eigentliche Programmierseite, lassen Sie uns einfach sehr schnell sprechen Warum möchten Sie vielleicht eine iOS App zu bauen? Warum ist iOS so genial? Also das erste Problem, die erste Sache, die ziemlich genial für uns, vor allem als CS50 Student, ist, dass iOS verwendet Objective C. Nun, es gibt eine neue Sprache namens Swift, aber wir sind nicht zu gehen verwenden, die in diesem Seminar. Wenn Sie interessiert sind in Swift gibt ist ein unabhängiges Seminar darüber. Aber Objective C ist im Grunde eine Obermenge von C. Bedeutung dass alles, was Sie in C verwenden können in Objective C übersetzt werden sehr leicht. Wie Sie später, dass in der Tat sehen können es gibt einige sehr einfache Syntax, sind im Grunde genau das gleiche, C und Objective C. So, da Sie CS50 genommen haben up so weit, die Sie bereits weiß Objective C, von mindestens 40%. Außerdem hat Apple eine wirklich robuste API für iOS. Es gibt eine Menge wirklich verrückt Dinge, die Sie tun können. Eines davon ist jemand tatsächlich eine iOS App erstellt zur Steuerung von Fahrzeugen, die ist ziemlich interessant. Wahrscheinlich ein Hubschrauber ist spannender. Aber das ist, wie leistungsfähig die iOS-API kann. Und wie haben Sie vielleicht heraus im Augenblick dachte, der Stack-Überlauf ist wahrscheinlich eine der die wichtigsten Online-Ressourcen zur Verfügung. Und eine gute Nachricht, für jeden einziges Problem können Sie möglicherweise denken Sie an und bauen Sie Ihr Abschlussprojekt in Objective C, gibt es wahrscheinlich ein Stapelüberlauf Antwort. Es ist einfach genial. Hinzu kommt, dass, iOS ist wirklich eine Plattform wo es eine massive erreichen Publikum mit wenig Aufwand. Es ist nicht wie Android, wo alles ist ziemlich fragmentiert. Alles iOS ist vereinheitlicht. Und solange Sie erstellen eine App für das iPhone, Sie können sehr einfach Hafen dass auf iPad, iPad mini oder verschiedenen iPhone Größen. Dies alles sind wirklich praktisch. Und es ist einfach richtig gut zum Einprägen Ihre Freunde. Sie können nur ein iPhone halten und erklären Sie Ihrem Freund hey, das ist die App die ich mache. Sie können, dass für jeden zu tun Desktop-Anwendungen, das ist schön. So, jetzt wollen wir tatsächlich bekommen in die Sprache Objective C. Also, warum nicht wir beginnen einige wirklich grundlegende Syntax. Wie ich bereits erwähnte Ziel C Es ist im Grunde eine Obermenge von C So viele grundlegende Syntax sind eigentlich genau das gleiche. Deklaration einer Variablen und Hinzufügen von zwei Variablen zusammen Genau wie wir es in Mario getan. Nichts Neues hier. Auch die Untermieter für Schleife und Zustand ist auch die gleiche. Sie können eine for-Schleife genau wie Sie in einem Mario [unverständlich] haben können. Und Sie Bedingungen tun können wie, was Sie haben in Ihrem bisherigen p Sätze getan haben. Allerdings Objective C nicht vollständig C, und es ist etwas, ist irgendwie komisch darüber. Die erste ist, dass, wenn Sie sind C-Programmierung zu tun, Sie in der Regel rufen schließen und dann einen Bibliotheksnamen. Aber in Objective C anruft diese Chemikalie eingeführt. Im Grunde sagen, Funktionalität, nur unterschiedliche Namen. Und die Saiten tatsächlich ein wenig seltsam. Sie können, dass die erste zu sehen was irgendwie seltsam ist ist, dass Sie eine ziemlich weird-- haben sorry-- Sie ein ziemlich komisch NS haben melden Sie hier. Und die zweite Sache, das ist irgendwie seltsam wird Sie ein at-Zeichen vor tatsächlich erklärt die Zeichenfolge. Also das At-Zeichen im Grunde bedeutet, daß eine Zeichenfolge nicht nur eine Zeichenfolge, es ist tatsächlich ein Objekt. Wir werden erklären, später so nicht Panik, wenn Sie nicht zu tun zu verstehen, was das bedeutet. Und Druck auf Konsole ist ein bisschen anders, weil in C nennen wir printf, aber in Objective C nennen wir [unverständlich]. Sie fragen sich vielleicht, was das ist. Das ist im Grunde printf, nur eine andere Sprache. Genau die gleiche Nutzung, genau die gleiche Funktionalität. Nun stellt sich heraus, dass Objective C tatsächlich hat ein ns voran in fast alles, jeden Grunddatentyp, NSString, NSArray, NSDictionary. Der Grund dafür ist, dass ns tatsächlich steht für Next Step, die ein Unternehmen ist, dass Steve Jobs hat gegründet, die ein Unternehmen ist, wo die Sprache Objective C ist geboren. Das ist also im Grunde Tradition. Ich weiß, es ist ein bisschen seltsam, aber es ist von Apple. So etwas, was noch seltsamer ist als eine Funktion Erklärung. Das ist ganz anders als das, was wir finden Sie in C, denn hier ist es tatsächlich nicht wie C mehr. Was Sie hier-- durch das haben so ist dies kein Aufzählungspunkt, das ist ein Minus-Zeichen. Sie haben ein Minuszeichen Klammern Leere und dann der Name der Funktion. Sagen wir einfach, wenn wir Hallo Welt haben, dann der Rückgabetyp wäre nichtig weil wir nichts zurück. Was bekommt wirklich seltsam ist, dass wenn man mit mehr als einem Parameter vorbei in eine gleiche Funktion, wird wirklich seltsam wie hier gezeigt. Wir haben eine Methode Namen, genannt addInt zu [unverständlich] und wir sind vorbei einen Parameter. Aber danach haben wir mehr Methodennamen Anruf mit. Und nach mit wir vorbei der zweite Parameter. Dies ist eigentlich ein wenig seltsam, aber alle diese Funktionsdeklarationen nach dem gleichen Muster wie dieses. Wir haben ein Minuszeichen zu beginnen. Das Minuszeichen kann ein Pluszeichen sein manchmal, welche Art von Methode ist es. Verfahren ist grundsätzlich ein anderer Name für Funktion. Und wir sind zu gehen erklären, dass später, wenn wir über Objekt sprechen orientierten Programmierung. Sie zuerst die Rückkehr angeben Geben Sie in Klammern, danach kommt der Name der Methode. Sie geben gerade vorbei einen Parameter. Und wenn Sie mehr Parameter haben Sie den Namen der Methode erweitern müssen und im Grunde etwas schreiben Sie hier mehr. Es könnte alles, was Sie wollen. In unserem Fall ist es mit. Aber man könnte sagen Ende, oder oder oder abc voll ausgestattete Bar, was Sie wollen. Und dann nach, dass Sie Weitergabe-Parameter b. Dies ist ein wirklich seltsam Konvention, aber wir sind gehen, um zu sehen, warum Apple wollte zu, dass sehr schnell zu tun. So wie Sie Funktion aufrufen? Aufrufen einer Funktion in den Ziel- C ist auch verschieden von C. Eigentlich ruft ein Funktion in Objective C ist mehr wie Sie mit jemandem sprechen. Hier haben wir selbst, die wird ein Objekt bezeichnet. Sie sind im Grunde sagen die Objekt selbst zu sagen: "Hallo Welt!" Das ist, wie man die Funktion aufrufen. Eine Aufgabe und ein Verfahren Namen miteinander kombiniert. Und das ist, wo die seltsame Erweiterung für Methodennamen wirklich ins Spiel kommt. Schauen wir uns das zweite Beispiel. Wir haben gerade eine Methode namens definiert addInt mit blah blah blah. Also in diesem Fall, wenn Sie anrufen dass spezifische [? Nachricht?] es geht wie selbst addInt aussehen: 10 mit: 2. Es klingt wie Englisch. Obwohl die Funktion Funktionsdeklaration ist seltsam, der Punkt der Objective C ist Methodendeklaration Muster, ist, dass, wenn Sie anrufen die Funktion oder Verfahren es wird wie tatsächliche Englisch klingt. So ist es sehr intuitiv sobald man sich in sie. Besonders in diesem Fall, wo man im Grunde sehen, dass der Name der Funktion ist Art der Dokumentation selbst. Sie müssen nicht jede Weitere Erläuterungen zu sehen was genau passiert ist, was genau einen Parameter zu tun. Möchten Sie darüber hinaus, reden wir ein wenig etwas über objektorientierte Programmierung. Objektorientierte Programmierung ist eine der grundlegenden Programmierung Verfahren oder Muster, die ist Ziel C Objective C verwendet heißt Objective C, nicht C, für einen wirklich guten Grund. Also, bevor wir in zu erhalten Objective-C-Syntax, Lassen Sie uns ganz schnell betrachten Was genau ist ein Objekt. Wir haben wohl etwas getan wie Objekt vor, das nennt man die Struktur, wenn Sie Umsetzung eines Baumes oder eine verkettete Liste oder [? versuchen. ?] Also, es ist im Grunde wie eine Struktur, aber es ist viel mächtiger als das. Ein Objekt hat Methoden und Eigenschaften. Methoden sind im Grunde Funktionen. Funktioniert im Grunde, dass ein spezifisch für eine bestimmte Aufgabe. Und Eigenschaften sind im Wesentlichen die Feld, das Sie in der Struktur angeben. Also für jedes einzelne Objekt wir haben einige Immobilien dass einige Variablen, beziehen sich auf das Objekt. Und wir haben einige Funktionen, die sind spezifisch für das Objekt. Und die Funktionen sind Methoden aufgerufen und die Variablen werden Eigenschaften genannt. Es ist nur ein schicker Name. Während Sie tatsächlich jede einzelne Ansicht Sie sehen, während Sie eine iOS-App zu öffnen, sagen wir einfach, Twitter oder Facebook, jede einzelne Ansicht Sie sehen, ist ein Objekt. Und auch das ganze Programm ist ein Objekt, mit zu beginnen. Sehr interessantes Konzept. Und warum wollen wir Objekt orientierte Programmierung? So können Sie sich vorstellen, dass, wenn Sie Programm es ziemlich kompliziert. Sagen wir einfach, wenn man Umsetzung Schachbrett, die Logik zu gehen wirklich kompliziert sein. Sie haben 36 verschiedene Stücke, so, dass wenn man wollen Logik für alle Schreib 36 verschiedene Stücke in Schach, das wird eine Menge sein, verschiedene Funktionen und Variablen. Es ist eine Menge Ärger. Und wahrscheinlich wirst du einen schreiben sind verschiedene Verfahren oder andere Funktion für jede der Stück genau zu kontrollieren, was sie tun. Aber wenn Sie das tun objektorientierte Programmierung all dieser Stücke kann in abstrahiert werden ein einzelnes Objekt. Und das Objekt wird etwas gemeinsam haben Eigenschaften, wie welche Art von Stück ist das? Welche Farbe hat es? Wie kann es zu bewegen? Und auf diese Weise haben Sie stark vereinfacht die Logik davon. So ist es nur eine wirklich gute Möglichkeit komplizierte Programme zu machen, und hierarchische Beziehung innerhalb des Programms, sehr einfach. Als wir gehen, um zu sehen Grund sehr schnell, wenn wir tatsächlich tun, programming-- wenn wir tatsächlich tun ein S-Code Programmiersitzung später. Nun zusätzlich dazu, Objektorientierte Programmierung ist nur eine Menge Spaß. Sie haben eine eigene Objekt zu entwerfen. Sie haben zu entwerfen, was tut es aussehen alleine. Es gibt keine richtige Antwort darauf. Und es ist ganz interessant. So in der objektorientierten Programmierung, zwei grundlegende Konzepte wird Klasse und Instanz. Eine Klasse ist im Grunde eine Vorlage für Objekt. Und ein Beispiel ist im Grunde ein einzelnes Objekt. Sagen wir einfach, Sie machen ein Cookie sind. In diesem Fall wird jede einzelne Cookie Sie tatsächlich am Ende mit wird sich ein Objekt sein. Aber das Cookie Platte Sie verwenden, um zu backen alle Cookies eine Klasse sein. Eine Klasse ist im Grunde eine Vorlage. Und die Instanz ein spezifischer sein Objekt erstellt aus dieser Klasse. Und eine Instanz erstellt werden basierend auf Klassendeklaration, wie wir in späteren Dias sehen. Lassen Sie uns also tatsächlich ein wirklich kurzes Beispiel [unverständlich]. Nehmen wir an, wir erklären ein Objekt für eine Katze. Das Objekt sollte have-- die Katze Klasse sollte haben einige Eigenschaften und Methoden. Welche Eigenschaften sollte die Klasse have-- sollte die Katze haben? Zum Beispiel, Farbe, Alter und Rasse, die werden Variablen sein, dass sind für jede Katze. Und das sind einige Dinge, dass wir verwenden, um eine Katze zu beschreiben. Welche Art von Verfahren, oder was kann eine Katze tun? Einige kurze Beispiele würde Chase sein Maus, Fisch essen oder einfach nur miauen. Dies ist eine wirklich schnelle Beispiel Katze Klasse. Und eine wirklich spezifische Katze Objekt wird eine Katze wo wir angeben Farbe, Alter und Rasse. In diesem Fall ist unser Ziel nicht mehr eine Klasse mehr. Wir kopieren Sie die Vorlage aus der Klasse und wir uns bestimmte Informationen angeben zu diesem bestimmten Objekt um es unabhängig. Und wenn Sie anrufen eine Methode innerhalb eines Objekts, rufen Sie einfach meow auf das Objekt, das ist der gerade erstellten Katze. Wahrscheinlich werden Sie ausdrucken so etwas wie "Hallo Welt! Miau. " Recht nettes. Alles klar, lass uns einfach bekommen in einigen Details und sehen, was genau bedeutet, dass Übersetzen ins Leben iOS-Programmierung. So in iOS Programmierung jedes einzelne Klasse wird in zwei Dateien durchgeführt werden. Eine Datei ist hier, was wird als Schnittstelle. Eine weitere Datei ist hier, was heißt Umsetzung. Typischerweise wird die Schnittstellen wird extension.h haben wie wir es in C-Bibliotheken gesehen haben. Und Umsetzung Datei werde extension.n haben. Es ist ein bisschen seltsam. Jedoch .n bedeutet tatsächlich .c, gibt es keine fundamentalen Unterschied zwischen denen zwei. Also in diesem Fall, können wir sehen, dass wir erklärt Schnittstelle, Katze: Objekt. Das nennt man Vererbung. Wir sind im Grunde erben die Katze Klasse von der Objektklasse. Also jeder Eigenschaft und Methode, die war die zuvor in der Objektklasse definiert wird automatisch festgelegt werden bei einer Katze Klasse auch. Darüber hinaus definieren wir Farben, Rasse und Alter, drei Variablen. Das Personal war sehr freundlich etwas, was Sie vorher getan haben. Es sieht aus wie struct. Das ist im Grunde die Syntax für Strukturdeklaration, und das ist völlig in Ordnung. Und da ich bereits erwähnt habe, der Unterschied eine Struktur und ein Objekt, eines der grundlegende Unterschiede ist, dass ein Objekt eine Methode, während eine Struktur hat nur Variablen. So dass zusätzlich zu den Eigenschaften oder Variablen, die wir für das Objekt erstellt haben, geben wir eine Methode. Sagen wir einfach, hier haben wir zwei Möglichkeiten, eine ist meow, ein anderes ist chase Maus. Wir wollen wahrscheinlich werden vorbei ein Parameter auf der Grundlage unserer früheren Verfahren Erklärung Muster. Sie wollen wahrscheinlich zu sein, indem ein Maus. Und werden Sie wahrscheinlich wollen um einen bool signifikanten zurück wenn Ihre Katze hat erfolgreich fing die Maus oder nicht. Dies ist die Schnittstelle, aber wir können zu sehen, dass die Schnittstelle tatsächlich tut nichts. Es sagt nur ein Programm was exists-- Was gibt es in der Katze Klasse. Also, um für die Programm, um etwas zu tun, wir brauchen, um die Umsetzung Dateien. So, hier, das erste, was wir tun, ist offensichtlich importieren wir die Schnittstelle. Nachdem wir die Schnittstelle zu importieren, definieren wir die Methode. Sagen wir einfach, hier meow nur drucken würde "Hallo Welt!" an die Konsole. Und nach der Umsetzung Datei, wir ziemlich viel getan. Dies ist im Grunde eine Klasse Deklaration für eine Klasse. Nun stellt sich die Frage, wie können Sie eine Variable deklarieren? Die Art, wie Sie eine Klasse verwenden, um eine zu erstellen Objekt in Objective C wird hier geschrieben. Sie zuerst festlegen, dass das ist eine Katze Zeiger, weil jedes Objekt in Objective C schließlich als Zeiger implementiert. Und Sie haben die Klasse aufrufen, rufen Sie als alloc, der im Grunde malloc, Erzählen Sie das Betriebssystem, das Sie brauche etwas Speicherplatz für dieses Objekt. Danach können Sie ein Objekt haben bereits und Sie nur initialisieren. Dies ist nur Konvention. Ich weiß, es ist ein wenig seltsam, aber das ist eigentlich, wie Apple tut Sachen. Zuweisen von Eigenschaften eigentlich ziemlich einfach. Es ist sehr ähnlich was du tust, wenn Sie Zuweisen einige spezifische Feld innerhalb der Struktur. Sie müssen nur die Variable Namen, den Namen der Eigenschaft, und vergeben Sie einen bestimmten Wert zu. Und Aufrufen einer Methode ist sehr ähnlich. Der Aufruf einer Methode im Grunde, was ich sprechen für den Aufruf einer beliebigen Methode in Objective C. Du Gabe eines Objekts, in dieser Fall es wird myCat sein, und du bist das Bestehen der Methodennamen. Wie, wenn Sie auf das Objekt zu sprechen, myCat, die Sie miauen sollte. Es ist ziemlich interessant. Danach gibt es ein Weiteres Entwurfsmuster dass wir, darüber zu sprechen bevor man zur eigentlichen S-Code. Das Design-Muster wird als ereignisgesteuerte Programmierung. Dies ist wahrscheinlich auch einer der am meisten Grundgedanken in iOS-Programmierung. So werden Sie wahrscheinlich nicht, was genau, ist die ereignisgesteuerte Programmierung, aber es ist nicht wirklich so unheimlich. Nun, in der Tat, Sie haben bereits zuvor getan. Dies ist eine der Zeilen, die Sie wahrscheinlich haben bereits im letzten [unverständlich] geschrieben der CS50, google.maps.event.addListener (Marker, "Klick", function () {}) :. Durch den Aufruf dieser Zeile sind im wesentlichen dem Computer mitzuteilen, dass, wenn das Ereignis genannt "Klick" geschieht auf die Markierung, verwenden Sie diese Funktion. Dies ist sehr verschieden von was Sie in mario.c tun. In mario.c Sie gerade führen Sie das Programm einmal, es gibt Ihnen eine Leistung, und Sie sind fertig. Dies sind ein bisschen wie One-Shot-Programme. Ereignisgesteuerte Programme sind sehr, sehr unterschiedlich. Stellen Sie sich vor, wenn Facebook ist ein One Schuss-Programm, es ist nicht wirklich gut. Sie gehen, nur um Facebook einmal und fertig. Es gibt Ihnen eine Ausgabe und Sie nie wieder. Sie kam nie etwas anderes. So, hier, vor allem das Muster, das wir verwenden, ist ereignisgesteuert, so dass jede Funktion wird basierend auf gefangen werden, was Ereignis eingetreten ist. Zum Beispiel, wenn wir eine Taste, und wir geben dass, wenn die Schaltfläche geklickt wird, rufen Sie die Funktion "Hallo Welt!" Auf diese Weise können wir wirklich die Funktionslogik verwalten fließen in sehr flexibler Weise. Der Benutzer kann tun oder rufen Sie eine Funktion dass bereits aufgerufen wurde. Es ist voll und ganz auf, was die Nutzer tun basiert. So können wir sehen, dass dies eigentlich viel besser als mario.c. Und eine gute Nachricht ist, dass es eigentlich kein neues Konzept. Ihr habt bereits getan dass in den letzten Problem eingestellt. So in Objective C gibt es drei verschiedene Diagramme für ereignisgesteuerte Programmierung. Das erste Diagramm ist genannte Zielaktion, in dem Sie eine Taste binden Presse mit einer Funktion. Sagen wir einfach, wenn Sie klicken einige Taste eine Funktion rufen Sie an. Dies ist sehr einfach Zielaktion. Das zweite ist wirklich das härteste, es heißt Delegation zu Protokoll. Wir werden erklären, daß in allen Einzelheiten später. Und die dritte Möglichkeit ist Benachrichtigung. Das ist eigentlich nicht sehr wichtig, soweit uns betrifft, denn die Chance, dass Sie gehen, um Benachrichtigung verwenden möchten in das endgültige Projekt ist ziemlich gering. Also werden wir diesen Teil überspringen. Und wir werden zu tauchen in Delegation zu Protokoll. Also, was genau ist ein Protokoll? Oder was genau ist eine Delegation? Lassen Sie uns über Protokoll, mit zu beginnen zu sprechen. Protokolle sind nichts anderes als Ereignisse. Aber diese Ereignisse zu bestimmten Sie wurden von Apple zu starten mit. Zum Beispiel, ich bin nicht ganz sicher, wie viele von euch Jungs verwenden Apples Original- App Mail oder Kontaktformular, aber jedes Mal, wenn Sie blättern die Tabelle und drücken Sie die spezifische Zell auf dem Tisch ist, dass ein Ereignis. Und wenn Sie wollen, das Ereignis selbst, es ist eigentlich ein bisschen schwer. So hat Apple, dass auch dir gegeben so dass Sie direkt verwenden können das Ereignis, etwas auf eigene Faust tun. Protokolle sind eigentlich sehr, sehr weit verbreitet in Objective C. Nun, in der Tat, jede einzelne App hat etwas gefangen app-Delegaten. Innerhalb von empfindlichen ist alle das Protokolle für das Laden der App. Sagen wir einfach, es gibt eine Veranstaltung für App haben Last. Also, was passieren soll, nachdem Sie eine Anwendung erstellt, nachdem Sie die App öffnen, nachdem Sie die App zu schließen, oder nach Sie das iPhone in den Ruhezustand. Dies alles sind Ereignisse, die hat Ihnen bereits gegeben. Und die ursprünglich in diesen Partikeln wird es keine Implementierung. Apple hat gerade gesagt, dass diese Funktion passiert, wenn ein Ereignis eintritt, aber was man damit machen Funktion ist ganz Ihnen überlassen. Delegation ist im Grunde erzählt die Klasse dass Sie sollten diese Protokolle verarbeiten. Es ist ein wenig verwirrend, aber es wird viel klarer, wenn wir die s-Codes in Aktion. Delegation auf Protokoll ist eigentlich ein sehr robusten Mechanismus im Sinne dass, wenn wir tun Delegation zu einer bestimmten Klasse, wir im Wesentlichen verarbeiten kann Veranstaltungen aller Art mit jeder Klasse haben wir, sehr bequemes Werkzeug. So ein kleines Beispiel für Delegation zu Protokoll wird sein, was ich haben gerade darüber gesprochen. Dieses Protokoll spezifisch aufgerufen Tableview [unverständlich] auszuwählen Rolle auf [? Index?] [? Vergangenheit. ?] Also das eine Veranstaltung, die gefangen werden würde, wenn Sie tatsächlich auf einem bestimmten Leitungs Zelle im Tableview, lassen Sie uns einfach in Ihre E-Mails sagen oder in Ihren Kontakten App. Innerhalb einer Funktion war ursprünglich nichts zu tun. Die Funktion nicht alles tun, standardmäßig. Aber können Sie festlegen, was die Funktion macht, gegeben, was Sie aus Ihrer Anwendung wollen. Sehr praktisches Tool. Und mit allem, Davon abgesehen, habe ich im Grunde decken einige sehr grundlegende Syntax und Grundkonzept für die Ziel-C Programmierung, und wir können etwas s Code zu tun. Viel spannender. So s Code ist eigentlich ein wenig überwältigend wenn Sie es öffnen zum ersten Mal. Eine kurze Notiz, wenn Sie also will iOS-Entwicklung zu tun, Ich empfehle Ihnen einen Mac haben. Da tut iOS Entwicklung Windows ist wirklich sehr, sehr hart. Es ist machbar, aber es ist wirklich schwer. Und auf jeden Fall tun, nicht zu bearbeiten g zu verwenden. So im s-Code haben wir verschiedenen Bereichen. Beim ersten Öffnen bis s-Code finden Sie eine Navigationsleiste zu sehen, was im Grunde zeigt Ihnen alle Dateien, die in Ihrem aktuellen Projekt ist. Sie haben eine Symbolleistenbereich, die ist im Grunde die Verwaltung Blick, oder ein wenig schneller Werkzeuge zum s-Code selbst. Und das ist die eigentliche Editor-Bereich. Dieses Gebiet ist sehr ähnlich g bearbeiten aber viel besser als g bearbeiten. Und in diesem rechten Bereich ist genannt Wirtschaftsraum. Das Gebiet wird wirklich praktisch, wenn Sie erstellen sind Schnittstelle oder die Angabe einige schnelle Setups für Ihre Anwendung. Und der letzte Bereich ist die Fehlersuche. Dieser Bereich enthält die Konsole. Also, wenn Sie sagen, printf, NSLog oder in unserem Fall, alle Ergebnisse werde hier ausgedruckt werden. In Ordnung? Ich denke, wir können sehr schnell tun ein Beispiel für iOS-Programmierung. Und lassen Sie uns bis s Code tatsächlich zu öffnen. Also jedes Mal, wenn Sie s Code zu öffnen, ist es gehen zu zeigen, bis so etwas. Es wird Sie fragen, was möchten sie tun? Wollen Sie etwas beginnen soll zufällige, einen Spielplatz, im Grunde kann nur Code zu testen, ohne tatsächlich verpflichten, jedem App. Wollen Sie ein neues Projekt erstellen? Oder haben Sie den Vorgang fortsetzen möchten Arbeiten am bestehenden Projekt? In unserem Fall werden wir um ein neues Projekt zu erstellen. Also es ist wirklich schön, s Code tatsächlich schon da Sie einige Vorlagen zum Anlegen von Objekten. Wenn Sie ein Spiel machen wollen, s-Code tatsächlich ein Spiel Vorlage für Sie, hat Seite-basierte Anwendungen, Registerkarte basierte Anwendung. In diesem Fall werden wir etwas sehr einfach zu tun, und wir werden ein verwenden Einzelansicht Anwendung. Danach genau das, was Sie anrufen möchten Ihr Produkt, und wie ist dein Name, was ist Ihre Kennung und welche Sprache Sie verwenden. Hier haben wir nicht wollen, überprüfen mit Core Data. Core Data ist im Grunde eine databasing iOS. Wenn Sie Core Data zu tun, s Code wird zu definieren, viel komplizierter Klassen für Sie. Also, alles einfach zu halten, sind wir gerade dabei, ohne Core Data zu tun jetzt sofort. Das Problem, wir werden sein Hilfe ist dass-- Problems wir gehen zu erschaffen ist, dass wir Grundsätzlich wollen von C importieren Mario auf einem iOS-App. So nennen wir, dass Mario-iOS. Natürlich können Sie, was Sie angeben, wollen in Ihrem Projekt setzen. Und wir gehen. Das ist also ein wenig überwältigend, aber dies ist tatsächlich was wir gerade gesehen, auf den Folien. Und der erste Bereich im Moment sehen wir ist im Grunde Projektkonfiguration. Also alles, was Sie tun möchten, Projekt, welche Art von Gerät, sagen wir einfach, welche Art von Gerät tun Sie Ihre Anwendung auf erscheint? Ist es iPhone, iPad oder universal? So Gerät Orientierung, all dieses Zeug. Nicht sehr wichtig, jedoch könnte, aber dies ist ein Ort, an dem Ihnen bei der Einrichtung Ihr Projekt, wenn Sie tatsächlich wollen mit dem Apple-Store zu implementieren. Also gut, lassen Sie uns etwas, das in unserem Code ist. Lassen Sie uns über den Dateimanager zu gehen. Und dies sind alle Dateien, die bereits kam mit der Vorlage, sehr schön. Also, wenn wir auf einer von ihnen das ist, wie es aussieht. Sehr ähnlich g bearbeiten. Aber Sie, dass die sehen können Syntax-Highlighting ist wahrscheinlich ein bisschen schöner. Und es ist eigentlich viel mehr mächtiger als g Bearbeitung. Und Sie können Auto-Vervollständigen eine Menge Dinge für Sie, da wir sehr schnell zu sehen. Wir öffnen die Debugging-Bereich als gut. Also gut, wie wir sehen können, Die Konsole ist hier richtig. Dies ist, was Sie gehen zu sehen, wo Sie sind in printf oder nsloging etwas. So ohne weiteres lassen Sie uns wirklich kompilieren Sie die App und sehen was passiert. Ein wesentliches Merkmal für s-Code, ist, dass s-Code kommt mit einem iPhone-Simulator. So dass Sie nicht brauchen, um eine haben iPhone, um Ihr Projekt zu versuchen, s-Code kann, dass für Simulation Sie, wie wir jetzt sehen können. Es ist ziemlich nett. Es hat sich ein wenig wenig Zeit zu kompilieren und im Grunde haben wir eine leere Anwendung, was eigentlich nichts. Aber es kompiliert. Es ist ziemlich genial. Es ist viel besser als C, oder? Also gut, dann lasst uns versuchen, etwas hinzuzufügen. Eine Datei, die ein wenig ist hier seltsam heißt Storyboard. Dies ist tatsächlich eine große, genial Funktion für s-Code. Da im s-Code, können Sie tatsächlich ziehen and-Drop-Elemente auf die Schnittstelle und es wird direkt angezeigt. Lassen Sie uns versuchen, dass. Wir lassen hier eine Bezeichnung, "Hallo Welt !!!" Wir können zu zentrieren, dass. Ziemlich cool. Lassen Sie uns jetzt führen Sie dieses Stop-Simulation. Hier haben wir "Hallo Welt !!!" Wir haben nicht einmal jede Kodierung noch nicht. Was zum Teufel ist passiert? Dies ist, wie leistungsfähig Interface Builder kann. Jemand sagte sogar, dass Sie können wahrscheinlich nur füllen Sie eine App ohne Schrift wahrscheinlich mehr als tausend Zeilen Code nur mit der Interface Builder. Aber es ist wahrscheinlich nicht der beste Weg, es zu tun. Lassen Sie uns nun tatsächlich kommen zur Codierung. So der Struktur von Datei ist eigentlich sehr interessant weil, wie Sie sehen können, gibt keine Hauptfunktion überall. Siehst du? Wie wir bereits erwähnt, Sie, dass diese sehen können ist eine Implementierung-Datei für eine bestimmte Klasse. Aber es gibt keine Haupt überall. Also, wo ist Haupt? Tatsächlich gibt es eine Haupt, aber die Haupt tatsächlich vor Ihnen verborgen. Die wichtigste ist hier. Das kommt mir bekannt vor. Also im Grunde, was iOS innerhalb Haupt tun ist, dass, wenn Haupt ist genannt, das ist im Grunde wenn die App ausgeführt wird, wird es erstellt ein Objekt namens AppDelegate. Wie ich schon erwähnt, die gesamte App ist eigentlich ein Objekt für sich. So auf diese Weise im Wesentlichen die iOS-App sagt dem Compiler dass OK, ich werde zu erstellen ein Produkt namens AppDelegate, und das wird meine Anwendung sein. Sie müssen also gehen durch diese AppDelegate und sehen, was der Kerl tut. Mein Job ist für mich getan. Und in AppDelegate das sieht man es gibt einige wirklich seltsame Funktionen, Naja, eigentlich Methoden, dass Apple hat bereits euch gegeben. Was ist das? Dabei handelt es sich eigentlich nur Protokolle daß ich redete. Das sind Ereignisse, die Apple- gegeben hat, mit zu beginnen. Es gibt nichts in einigen der Funktionen im Augenblick, aber wenn wir initialisieren möchten etwas für unsere App bevor man in die Anzeige jede Ansicht, das machen wir hier. Sie können nur den Namen zu lesen und ich denke, die Veranstaltung ist eigentlich wirklich klar. So, jetzt Haupt geschaffen hat ein Objekt für AppDelegate. Und was AppDelegate tun wird ist eigentlich auch vor Ihnen verborgen. Die AppDelegate wird beginnen Laden der Viewcontroller Lager. So ist es im Grunde geht zu starten Laden Sie alle Ansichten, die Sie haben und nur die Aussicht machen auf Basis der Hierarchie. Also in diesem Fall haben wir nur eine Ansicht, die hier. Das ist also die einzige Ansicht das wird aufgerufen. Der Viewcontroller Logik ist hier richtig. Dies ist der Code, der tatsächlich steuert die Aussicht, die wir gerade gesehen haben. Alles klar, lass uns etwas zu tun hier. So viewDidLoad klingt wie ein Ereignis, wenn in der Tat ist dies auch ein Delegierter, dies ist auch ein Protokoll. Also was auch immer der Ansicht geladen ist, alles innerhalb der Funktion aufgerufen. In diesem Fall sollten wir "Hallo ist Tianyu! ", Wenn man das Programm ausführen. Es ist schon ein wenig langsam Kompilieren Storyboard-Dateien. Nun ja, wir sehen einen Ausgang für sie. Es ist ziemlich cool. Lassen Sie uns nun tatsächlich tun Mario. Ich werde das zu definieren sehr schnell funktionieren. marioWithLevels: (int) Ergebnisse zu erzielen. In Ordnung, das ist eigentlich das genial Merkmal s Code Auto-Vervollständigung. Also, wenn Sie zum Schreiben, und geben Sie ein, es hat bereits die Vorlage gegeben für Sie, das ist ziemlich cool. Das sollte wirklich suchen vertraut euch. Es tut uns leid, das ist meine Schuld. Alles klar, cool. Diese Logik sollte wirklich bekannt vor an euch, vor allem nur Mario. Aber wir werden jetzt ausdrucken zu die Konsole jedes Mal, denn wir wollen irgendwie halten Übersicht über das, was wir den Druck. Wir werden die benutzen ergibt irgendwie später um den Druck anzuzeigen aus, um den Benutzer entstehen. Anstatt also wir gerade sind nslogging alles, die wir tun alles, was die Speicherung in einem Funktionsaufruf Ergebnis aber die Logik ist genau die gleiche. Nachdem wir es, wir beenden nur drucken unsere Ergebnisse. Und hier statt Ausdruck meiner Namen, werden wir eine Funktion aufrufen. Mal sehen, was passiert. Hoppla, offensichtlich. Wir haben eine schöne kleine Pyramide hier. Dies ist im Wesentlichen C, sind wir nur Manipulation, in dem Sie eine Funktion aufrufen und wie eine Funktion aussehen. Es gibt nichts anderes. Aber das ist eigentlich nicht sehr spannend hier, weil wir nicht sehen, nichts von der iPhone-App. Also, wenn Sie wirklich ein iPhone app-- wenn Sie tatsächlich Mario iOS Recht jetzt, du wirst doch nicht um etwas zu sehen, dass etwas mit Mario, weil zu tun alle diese Ausgänge in einer Konsole werden von einem Benutzer verborgen. Dies ist, was Sie sehen, was "Hallo Welt !!!" Nicht gut. Lassen Sie uns nun versuchen, den Benutzer sehen was genau wir Ausdrucken. So brauchen wir nicht mehr zu kennzeichnen. Lassen Sie uns versuchen, herauszufinden, was anderes, das nützlich sein könnte. Es ist tatsächlich eine Element, das heißt Textfeld, die geeignet sind, sehr hilfreich für uns. Es zeigt im Grunde eine Region Text, der bearbeitet werden kann. Also das sieht wirklich hilfreich. Lassen Sie uns jetzt ziehen Sie es und legen Sie es. Wow, wir haben eine Text-Ansicht aus unserer Sicht wirklich Lust. Das ist ein bisschen zu groß. Machen wir es kleiner. Legen Sie es in die Mitte. Machen Sie es kleiner als gut. Jetzt haben wir einen Text-Ansicht, die wir konnten, verwendet, um unsere endgültige Ergebnis angezeigt werden. Aber im Moment ist es auf jeden Fall nicht zur Arbeit gehen da die NO- Viewcontroller wir gerade definiert weiß nicht, dass gibt es eine Text-Ansicht gibt. Also müssen wir irgendwie verknüpfen Sie die Textansicht wir gerade mit der Klasse erstellt, hat bereits mit uns kommen. Die Art, wie wir das tun, ist eigentlich wirklich magisch. So eröffnen Storyboard. Es gibt eine spezielle [unverständlich] genannt [? Assistent?] [unverständlich]. Wenn Sie, dass Sie, es ist werde zwei Dateien zu öffnen. One ist eine Klasse, die andere ist eine entsprechende Ansicht für sie. Es ist sehr, sehr hilfreich. Und lassen Sie uns geht gerade durch die h-Datei. Kontrolle, das ist [unverständlich] Logik. Drücken Sie Strg und ziehen die Textansicht in die Erklärung. Wir werden diese outputView nennen. Schließen. Also hier haben wir eine neue deklariert Immobilie zu unserer Viewcontroller Klasse. Und die neue Eigenschaft ist nur der Text-Ansicht wir in der Schnittstelle Gebäude erstellt haben. Also auf diese Weise konnten wir Zugang alle Daten und zu manipulieren, alles, was im Inneren ist die Ausgangsansicht, die genial ist. Also in unserem eigentlichen Code, Lassen Sie uns etwas zu tun mit ihm. Dieses Mal, wenn wir wie Drucken aus dem Endergebnis für Mario, wir sind in nichts Anmeldung. Ich meine, wir halten konnte die logging-Anweisung. Darüber hinaus haben wir senden das Auslesen wir gerade an den Ausgang Ansicht, erstellt die ist ein UI-Textview wir gerade erstellt. Nun wollen wir sehen, was passiert. Wow. Wir haben eine Pyramide in der App jetzt. So kann der Benutzer unserer Ausgabe, da sehen haben wir die Ausgabe von unseren Code kopieren unsere Schnittstelle. Es ist ziemlich gut. Es ist eigentlich nicht, dass spannend, weil wir can-- All die app tut zeigt eine Pyramide zu Ihnen, und es gibt nichts, was Sie dagegen tun können. Es ist nicht besonders aufregend. So, jetzt machen wir einen Taste loslassen dass die Ansichten zu löschen. Es scheint, dass ein Knopf wird hilfreich sein. Per Drag & Drop. Taste ein. Taste zwei. Wenn wir Sie mit der linken Taste sollte der Ansicht zu löschen. Es sollte nichts auf dem Bildschirm sein. Und wenn wir auf die rechte Taste, Mario, der Blick wird wieder angezeigt. Also auf diese Weise führen wir auch die magische Sachen, Kontrolle und ziehen zu der Klassendeklaration im Assistenten director-- im Assistenten Betrachter. In diesem Fall werden wir die Angabe , dass im Falle einer Klage sein. clearMario. Also hier haben wir bereits erstellt haben eine Aktion namens clearMario, wobei das Verfahren, die aufgerufen werden würde, wenn wir drücken Sie die Taste klar. Also in unserem eigentlich Code, lass uns einfach setzen Sie den Ausgangstext und die Ausgabeansicht in nichts, und auf diese Weise es erscheint klar zu sein. Darüber hinaus erstellen wir eine andere Methode namens runMario. Oh sorry, das sollte kein Eigentum. Na gut, das sollte eine Handlung als gut. Und wenn dieser Funktion ist genannt, wir laufen Mario zehn. Hoffentlich wird gut. Ist es zu kompilieren? Ja. Jetzt haben wir einen Blick. Wir haben einen Ausgang. Und lassen Sie uns sehen, was passiert. Das ist vorbei. Es ist wieder da. Also hier haben wir festgelegt haben, welche Art von Funktion aufgerufen wird, wenn wir geben etwas, wenn wir drücken Sie eine bestimmte Taste. Dies ist im Grunde das Zielaktionsprogramm für ereignisgesteuerte Programmierung in Objective C. Hinzu kommt, dass, es ist nicht sehr aufregend, weil wir nicht wirklich verändern können wie hoch der Pyramide wird, so dass wir wollen wahrscheinlich irgendwie ein Eingabe von der Benutzer und ändern Sie die Höhe der Pyramide auf, was sie ausgegeben. Also werden wir das tun. Dieses Mal, wenn wir als runMario, wir nicht nur nennen Mario direkt tun. Dieses irgendjemandes Titel. Delegierter. Dies ist sehr interessant. Was ist ein Delegierter? Ich werde selbst hier setzen. Und wir werden sehen, was das später. Also hier haben wir im Grunde erstellt haben ein bestimmte Instanz ein UI Benachrichtigung genannt Blick. Ein UI Warnungsansicht ist im Grunde, was du willst sehen jedes Mal etwas pops und fordert Sie zur Eingabe, wie das, was passiert, wenn Sie versuchen, etwas auf einem App Store kaufen. Hinzu kommt, dass, nachdem Sie erstellen Sie es, zeigen wir nur die Warnung. Alles klar, lass uns einfach schnell Test soll das gehen oder nicht. Das ist sehr cool. Lassen Sie uns nun tatsächlich schaffen ein Eingabefeld für den UI-Benachrichtigung. Dies ist, wie wir das tun. Und wir sollten ein haben Eingang Ansicht für die Warnung. Sehr cool. Sagen wir einfach, 10. Es ist nicht alles richtig machen Jetzt, da der Aufruf tatsächlich nicht zur Ausführung von mario ändern. So hat ein wenig zu wenig seltsam, weil, wenn wir einen Knopf nach unten drücken, wenn wir drücken Sie eine Taste in der Warnungsansicht, etwas passieren sollte, aber es nicht geschieht. Woher wissen wir, dass zu fangen? Woher wissen wir, dass ein Benutzer hat eine Warnungsansicht entlassen und bereits eine Nummer eingegeben, weil jetzt nichts tatsächlich passiert. Nun, hätten Sie vermutet, es richtig, Delegation. So dass zusätzlich zu allen diese Erklärungen, wir brauchen, um eine neue Delegation hinzufügen es heißt UI Warnungsansicht Delegierten. So dass jedes einzelne Interaktion oder Veranstaltung dass wir gehen zu müssen mit dem UI Warnungsansicht wird zu behandeln von unserer Klasse als gut. So dass zusätzlich zu, dass es werden Warnungsansicht Klick-Taste am Index. Dies wird erreicht. Also in diesem Fall haben wir bereits-- so haben wir ein Protokoll festgestellt, dass wird die Veranstaltung bei der hand Wir klicken auf die Schaltfläche Fertig auf der Hut Blick. Also jedes Mal, wir entlassen die Benachrichtigung Ansicht nach sollte dies geschehen. Lassen Sie mich nur testen Sie es ganz schnell. Nun ja, wir hier erreicht haben. Hier also, was wir nicht tatsächlich ist eigentlich erhalten the-- Deshalb wollen wir raus der Text, den wir bisher haben in der Warnungsansicht eingetragen. Und basierend auf Text, wir sind gehen zu Mario anzeigen. Dadurch wird sehr schnell heraus ob es tatsächlich funktioniert oder nicht. So dass in diesem Fall, wenn wir Eingang, sagen wir mal, 10, 10, wir sollten sehen. Sehr gut, wir haben hier eine Zahl. Es ist ziemlich gut. Jetzt ist der letzte Schritt wird also die be-- letzte Schritt, den wir jetzt tun müssen befindet sich nur nennen Mario mit Pegel am Eingang der Basis dass wir in Warnungsansicht setzen. Also müssen wir wandeln diese Zeichenfolge in iOS. Statische Überlauf ist sehr genial. Und dann nennen wir nur selbst marioWithLevels Wert. Mal sehen wird, dass tatsächlich funktionieren oder nicht. Wir sind schon eine Pyramide gegeben. Lassen Sie uns versuchen, um die Höhe zu ändern. Dass tatsächlich funktioniert. Es ist ziemlich cool. So dass jetzt können Sie nur Eingang jeder gewünschten Wert. Sagen wir einfach, vier. Das ist ziemlich genial. Das ist also im Grunde ein wirklich kleines Beispiel für wie Sie ein Projekt im s-Code erstellen und wie man ganz schnell verkabeln einige wirklich einfache Ereignisse und Funktionen. So ist die Quelle wird später online gestellt werden. Also, wenn Sie daran interessiert sind in wie iOS Mario arbeitet, Ich werde genau das gleiche setzen Projekte auf den CS50 Website später. Wir sind im Grunde mit der fertig Sommer, und bevor wir fertig Ich will einfach nur Jungs, darauf hinzuweisen Sie einige wirklich genial Ressourcen, sind online verfügbar. Offensichtlich ist der Apple-Dokumentation wird sich als sehr hilfreich. Aber zusätzlich zu, dass ich vor allem empfehlen vier Quellen, Code-Schule, Baumhaus, AppCoda und WWDC Videos. Code Schule und Baumhaus sind zwei Online Erziehungs Websites, das spezifisch konzentrieren auf Software-Engineering. Speziell für Code Schule, sie haben wirklich gute Anleitung für iOS. Das ist ein wirklich kleines Beispiel dafür. Sie tatsächlich eine wirklich cute-- Blick auf das kleine niedliche iPhone Kerl da drüben, das ist ziemlich genial. Und die Art, wie sie erklären, Ziel C-Syntax ist vollkommen klar. Baumhaus ist die gleiche. Und AppCoda ist ein Forum. Es ist eigentlich ein Blog, das durchgeführt wurde von einem wirklich erfahrenen Objective C Programmierer. Und all die Tutorials in AppCoda sind ziemlich kurz und einfach zu implementieren, sehr zu empfehlen. Und wenn Sie ein Entwickler sind, jeden Fall prüfen wie die WWDC Videos, wo man lernen Sie die neueste iOS-Programmierung Techniken, APIs und Bibliotheken. Das ist also so ziemlich es für das Seminar. Vielen Dank. Und ich hoffe, Sie haben Spaß Erstellen Ihrer eigenen iOS-App.