German Subtitles for Stanford University Developing iOS 7 Apps: Lecture 2 - Xcode 5



Subtitles / Closed Captions - German

>> Stanford University.

>> Paul Hegarty: Okay. Nun, willkommen für den Herbst Nummer zwei von CS 193P Vortrag von 2013/2014 Studienjahr. Und heute werden wir ein paar Dias am Anfang zu haben, Ich werde etwas mehr reden, und dann eine recht große Demo zu haben, wird versuchen,

und hoffentlich all die Dinge zu synthetisieren Ich habe gesprochen etwa auf den Folien für die ersten beiden Vorträge, das ist, dass wir gehen zu beginnen unsere Kartenspiel zu bauen. Okay. Diese Card-Matching-Spiel wird unser Substrat zu sein für die ersten zwei Wochen einige Objective-C zu lernen, Lernen über Xcode, zu lernen, wie iOS Haken

bis der Controller und die Ansicht und das Modell eine Benutzeroberfläche zu machen. Also, wenn Sie von den letzten Zeit erinnern, haben wir diese Karte Sache dass - haben wir die gesamte Karte. Es war eine sehr einfache Klasse. Haben Sie ein paar Eigenschaften - drei Eigenschaften gibt - und eine Methode.

Und das ist ziemlich viel es. Und so heute werden wir zu gehen und eine andere Klasse zu tun, was ist ein Deck, okay? Das Kartenspiel. Und denken Sie daran, dass Karte und Deck sind allgemein; sie sind nicht bestimmte Karten zu spielen, nicht wahr?

Eine Spielkarte, wie das Kreuz Ass oder König der Herzen - etwas, das alles, was in sich hat - das ist eine Spielkarte Sache. Dies sind die allgemeinen Karten und Decks. So könnte dies ein Deck von Flash-Karten, ein Deck der Fremdsprache Wörter Sie versuchen,

zu lernen, oder was auch immer. So versuchen wir, diese Plattform zu halten und Kartenklassen etwas generisch. Also hier ist Deck. Es sollte in seiner Grundstruktur bekannt vor, nicht wahr? Wir importieren es unsere Super Rahmen,

und dann unsere eigenen Header-Datei offensichtlich Import in unserer Implementierung. Und die Schnittstelle für Deck wird diese Art zwei zu haben, von grundlegenden Methoden: Man fügt eine Karte auf das Deck und man zieht eine zufällige Karte aus dem Deck. Okay? Und das Add auf das Deck eine Karte ist ein bisschen neu für Sie

weil man es hat zwei Argumente sehen kann. Okay? Dies ist die erste Methode, die Sie gesehen haben das hat zwei Argumente. Bisher haben Sie nur ohne Argumente oder ein Verfahren, Methoden gesehen mit einem Argument, wie die - Spiel - Spiel hatte ein Argument oder die Einrichter,

sie haben auch ein Argument. So bemerken, dass, wenn Sie mehrere Argumente haben und Ziele finden sie Art setzt mit den Namen der Methoden. Okay? So ist der Name dieser Methode, diese lange Methode ist Karte Doppelpunkt am oberen Doppelpunkt hinzufügen.

Das ist der Name dieser Methode. Okay? So ist die im oberen Teil ist eigentlich ein Teil des Namens dieses Verfahrens. Und die Argumente, wie die Karte, die Sie gehen zu addieren und an der Spitze - das ist ein Boolean ist, ob es an der Spitze hinzufügen von dem Deck oder an der Unterseite des Decks -

in Ordnung, werden diese Argumente durchsetzt. Und wir werden sehen, wie Sie in einem Moment hier ein solches Verfahren nennen. Und dann ziehen eine zufällige Karte wie eine ist, wissen Sie, ähnlich einem Getter, dass sie einen Wert zurückgibt und es hat keine Argumente. Aber dies ist nicht ein Getter, weil wir nicht eine Eigenschaft gemacht hat.

Und es ist eine Art wichtig verstehen Sie dies eine Eigenschaft gemacht haben könnte wie eine schreibgeschützte Eigenschaft oder etwas, das es liest, aber da eine zufällige Karte ziehen Art von etwas tut, es hat Art eines Algorithmus, um es - einen Mechanismus - Sie würden in der Regel nicht, dass eine Eigenschaft zu machen.

Es ist eine Art von Missbrauch einer Getter, das zu tun. Ein Getter ist wirklich nur einstellen und einen Wert zu bekommen. Es könnte Nebenwirkungen haben, wie Einstellung, es könnte die UI aktualisieren oder bekommen es vielleicht stellen Sie sicher, wird es zunächst initialisiert - diese Art von Dingen. Du gehst nicht zu - etwas, das etwas tut,

eine Karte sein wird, nicht eine Eigenschaft wie Zeichnung. Nun, wenn Sie wollen, haben, wie, dass oben Argument optional sein, okay, der einzige Weg, dass in Objective-C zu tun - offensichtlich müssen wir unsere Header-Datei dort - der einzige Weg, das zu tun, in Objective-C ist

eine neue Methode, fügen Karte Kolon mit nicht oben auf sie zu erklären. Also das ist eine ganz andere Methode, völlig unabhängig dem anderen Verfahren mit Ausnahme, dass bei der Umsetzung dieser anderen Methode werden wir nur die andere zu nennen, okay? Also in Add-Karte werden wir selbst Karte oben Kolon hinzufügen zu sagen,

was auch immer wir die Standard sein wollen, was ich sagen werde, ist nicht. Okay? Also nur zu verstehen, dass, wissen Sie, in einigen Sprachen wie können einige Argumente optional sein, oder Sie können Art Überlastung Dinge die gleiche Methode Namen haben müssen verschiedene Argumente.

Nein, in Objective-C jede Methode ist völlig verschieden und hat einen eindeutigen Namen. Und zusätzliche Argumente sind so durchsetzt. Okay? So würden diese zwei verschiedene Methoden sein. Das macht Sinn? Gut.

Also lassen Sie uns über unsere Umsetzung unserer Deck sprechen. So ist unser Deck geht nur ein paar Karten zu enthalten. Wir brauchen eine Art interne Datenstruktur zu speichern, um alle unsere Karten in. Und was werden wir tun ist, wir ein änderbaren Array zu bekommen sind. Sie haben also schon die Klasse NS Array gesehen,

Das ist die Grundlage Klasse Array, das ist ein Array von Objekten. Diese Objekte, die von der Art und Weise, in der Anordnung kann jeder Klasse sein. Es gibt wirklich keine Möglichkeit zu geben, welche Art von Klasse des Objekts ist in einem Array. Einige Sprachen erlauben Ihnen, das zu tun.

Sie können angeben, "Dies ist ein Array von Strings "und er weiß, dass. Aber in Objective-C können Sie das nicht tun. Und wir werden darüber reden, wie wir damit umgehen. Das ist ein bisschen von den wilden Westen von Objective-C, aber es gibt Möglichkeiten zur Art der Prüfung

und sehen, was die Objekte sind, wenn Sie wollen wirklich sicher zu sein darüber. Aber in diesem Fall haben wir nur dieses änderbaren Array. Und wandelbar bedeutet, dass wir Objekte in das Array hinzufügen können. Normalerweise ist ein NS-Array unveränderlich. Okay? Sobald es erstellt wird, was auch immer Objekte geben Sie es,

das sind die Objekte, die für immer in ihm sind - Sie können nicht aus nehmen, und Sie können nicht in. Wenn wir also Array wollen, wo wir Sachen hinzufügen können, wir haben diese Unterklasse zu verwenden, von NS genannt Array änderbaren Array NS. Okay? Sie können sehen, dass es eine Eigenschaft ist.

Es ist stark, weil wir dieses Array wollen in den Haufen zu bleiben solange wir dabei sind zeigt. Und natürlich haben wir es immer nonatomic setzen. Okay? Also das wird eine Reihe von Karten zu sein. Nun, da wir diese haben, könnten wir Karte implementieren leicht hinzufügen, zum Beispiel, sagen von nur: "Wenn an der Spitze, dann Objekt einfügen"

die Karte, die das Argument dieser Methode ist - erste Argument - "add Index Null." So legen Sie Objekt hinzufügen Index ein Verfahren in NS änderbaren Array ist, in NS-Array nicht - nur in NS änderbaren Array denn das ist es werden, mutieren würde - dass fügt das Objekt an diesem Index im Array

und Index Null wird die oben sein dass wir gehen zu definieren. Und dann anders, wenn wir gehen nicht, dass es an der Spitze zu setzen, wir werden es am Ende zu setzen, wir werden eine andere NS änderbaren Array-Methode zu verwenden, genannt Objekt hinzufügen.

Und fügt hinzu, dass gerade etwas am Ende des Arrays. So cool jeder mit, dass? Also meistens ich diese Methode nur in hier nur ein paar verschiedene Methoden zu zeigen, gibt es auf änderbaren Array und, wissen Sie, wie wir die Argumente verwenden können. Es ist keine große Sache hier; es ist nur irgendwie mehr zu gewöhnen

zu dem, was hier los ist. Gut. Also das ist, Karte. Sehr, sehr einfach. Und es gibt ein Problem, wenn. In diesem Add-Karten, wenn wir nur ein Deck geschaffen

und fügen Sie dann Karte genannt, würde es nicht funktionieren. Okay? Es wäre nichts zu tun. Warum wäre es nichts zu tun? Da die Eigenschaft Karten, okay - self.cards ist, wie wir unser eigenes Eigentum zugreifen - seine Getter sieht standardmäßig, dass dergleichen.

Wenn wir nicht einen Getter geben, das ist, was der Getter aussieht. Es wird gerade auf diese underbar Karten zurück Instanzvariable. Nun, das underbar Karten Instanz Variable gehen bei Null zu beginnen, da alle Instanzvariablen

in einer Objective-C Objekt beginnen Null. Alle von ihnen. Okay? So einschließlich Zeiger. So wird der Zeiger Null sein, das ist, dass wir null nennen, was bedeutet, es nicht zu irgendwelchen Gegenständen zeigen, was bedeutet, dass es kein Array ist, okay?

Wir haben einen Zeiger auf ein Array, das nicht darauf hat bis jetzt nichts. Okay? So ist das ein Problem. Also, wenn wir den Code in Karten ausführen wie self.cards Objekt Karte hinzufügen, gehen das ist nicht abstürzen aber nichts zu tun, auch nicht.

Okay? Weil ich Ihnen gesagt, dass Sie Nachrichten zu null senden können, Senden von Nachrichten an Zeiger auf Objekte, bei denen dies nicht der Zeige zu der Zeit zu eins, und es wird nicht abstürzen. Wenn Sie eine Nachricht senden, die einen Wert zurückgibt, diese Nachricht wird ausgeführt, keinen Code aber es wird Null zurück.

Okay? So viele Nullen fliegen hier herum. Okay? Wie werden wir dieses Problem beheben? Wie werden wir es so machen, dass Karte funktioniert hinzufügen? Nun, wir könnten etwas am Anfang der Add-Karte setzen das sagt: "Wenn self.cards null ist, dann ein Array gehen zuweisen im Heap und Punkt zu, und dann werden wir es nutzen. "

Okay? Aber das würde bedeuten, jedes einzelne Mal, wir haben zu verwenden self.cards würden wir um gehen und überprüfen und stellen Sie sicher, dass es nicht gleich Null. Und das wäre sehr ärgerlich sein. Okay? Das wäre sehr fehleranfällig, fehleranfällig, wir vergessen, es irgendwo zu tun.

All diese Dinge. So ein großartiger Ort zu tun, dass kleine wenn Scheck ist in der Getter, okay? Das Getter, dass wir genau dort für Karten haben - das ist der Getter für unsere Privateigentum Karten - anstatt nur die Karten zurückkehrt, lassen Sie uns eine Linie in Ordnung bringen

vor, der sagt: "Wenn die Karten gleich Null ist, gehen wir dann ein in dem Heap zuweisen und weisen Sie auf die Instanzvariable ". Okay? So ist die Art und Weise vergeben Sie ein Array in dem Heap ist verwenden Sie änderbaren Array alloc init NS. Also das ist, zwei Nachrichten Anrufe innerhalb von ineinander verschachtelt.

Die alloc ordnet das Element in der Halde, und init initialisiert, dass der Speicher so, dass es eine ist, Sie wissen, sensible Array. Und wir werden sehen, wie wir unsere eigenen initializer bauen in ein paar Dias hier. Also diese Weise jedes einzelne Mal, wenn Sie self.cards nennen,

Sie können sicher sein, dass es nicht gleich Null ist; es ist zumindest geht ein leeres Array zu sein. Hat jeder diesen Code zu verstehen? Es ist wichtig, dies zu verstehen. Ja. [Unhörbar]

>> Paul Hegarty: Okay. Die Frage ist also: Statt in diesem Getter sein diese Initialisierung Code zu haben, warum nicht ich einen Initialisierer wie ein init für Deck machen und setzen diese im Inneren Deck? Okay? Und das ist eine weitere Option.

Und wieder werden wir initializer zu sehen für Spielkartendeck, Sie gehen wir einen Initialisierer machen. Und wir könnten das tun. Aber nachdem die Initialisierung dieser Sache näher immer der Immobilie auf die tatsächliche ist mehr - es macht Ihre init weniger voll von einem Haufen Müll so.

Und das ist faul Instanziierung genannt, durch die Art und Weise, es so zu tun. Wir sind faul warten bis zur letzten Sekunde, bis wir instanziieren. Dieses Muster ist für jeden etwas dabei in Objective-C verwendet wird,

und Sie sollten es auf jeden Fall eher verwenden als die Dinge in Ihrem init tun. In init Sie wollen, wissen Sie, die Dinge festgelegt, stellen Werte, die, Sie wissen, kann nicht so leicht wie diese vorbelegt werden. Okay? Aber das ist eine sehr gute Frage. Und wir werden init in ein paar Dias zu sehen.

Okay? Also diese Weise wir self.cards garantiert sind, ist nie Null. Ja? >> [Unhörbar] >> Paul Hegarty: Ja. So ist der Unterstrich ist von den letzten Vortrag.

Denken Sie daran, dass, wenn wir eine Eigenschaft erstellen, Objective-C nicht automatisch dieses Ding, weisen synthesize: Karten gleich underbar Karten. Also mit anderen Worten, weist es eine Instanzvariable genannt underbar Name der Immobilie der Speicherplatz für diese Eigenschaft zu sein.

Also das ist, warum underbar Karten automatisch erstellt Für uns gibt es hinter den Kulissen. Das at-Zeichen synthetisiert ein Pop in unserem Code auf, aber es ist da hinter den Kulissen. Das ist eine sehr gute Frage. Alle anderen Fragen zu diesem Thema?

Okay. Also lassen Sie uns etwas über dieses Thema Zusammenbruch nach unten und suchen zeichnen auf eine zufällige Karte, okay? So eine zufällige Karte zu ziehen, alles was man tun will, ist erhalten eine zufällige Karte aus diesem self.cards, okay? So ist der Code sehr einfach wie gut. So bekommen wir nur eine Zufallszahl.

Das ist, was Bogen 4 zufällig tut, wenn Sie nicht wissen. Es ist nur eine C-Library-Funktion. Es wird eine Zufallszahl. Dann das kleine Prozent nach bedeutet es mod - in Ordnung, integer Modulo - und dann ist die Zahl self.cards.count Karten in unserem self.cards.

Okay? Also sind wir nur einen zufälligen Index in self.cards gehend zu erhalten, zuweisen dann eine zufällige Karte self.cards eckigen Klammern Index zu sein, okay? Das ist also, dass die gleiche eckigen Klammern ein Array Art von Syntax zuzugreifen. Und es ist interessant,

dass self.cards eckigen Klammern Index, tatsächlich, das ist eine Nachricht senden, es glauben oder nicht. Das ist gleich wie self.cards bei Index Indexobjekt. Okay? Es ist nur einige spezielle Syntax und syntaktischer Zucker zu machen, so dass Sie nicht haben, lange Objekt Add-Index zu haben.

Es ist das Objekt tatsächlich auf indizierte Index oder etwas mit einem echten langen Methodennamen. Das ist also nur eine schöne, kleine einfache Syntax. Aber das ist eine Nachricht, um die Karte zu erhalten senden an diesem Index des Arrays aus. Und dann sind wir auch gehen, um diese Karte entfernen

aus dem Array, denn dies ist eine zufällige Karte ziehen, okay? Es ist die Karte aus dem Deck zu ziehen. Es ist also nicht mehr im Deck, nicht wahr? Jetzt gibt es ein Problem mit diesem Code als auch, was ist: Was ist, wenn das Deck ist leer? Okay? Wenn das Deck leer ist, dann, dass unsigned Index geht

zu Null, richtig, denn es geht um 4 zufällige mod Null zu Bogen. Das geht auf Null. Und so sind Sie gehen zu sagen, "Random Karte gleich self.card unter Null." Nun, das wird Ihr Programm zum Absturz bringen

denn wenn self.cards ist ein leeres Array, dann gibt es kein Objekt mit Index Null und du gehst Array-Index außerhalb der Grenzen zu erhalten. Okay? Seien Sie also vorsichtig davon. Der Index - man kann den Index nicht erhalten - wenn ein Array nicht über ein Objekt

dieses Index kann man es nicht. Also das ist einfach zu beheben, aber. Wir werden einfach sagen: "Wenn self.cards zählen" wenn es mit anderen Worten sind die Dinge im Array ", dann werden wir das tun. Ansonsten sind wir nur zufällige Karte zurück gehen "

die ich gerne auf Null initialisiert am Anfang meiner Methode. Und deshalb ist eine Art, wie ich diese Sache, die es von initialisieren legen Sie es auf den Standardwert, den Sie möchten, dann, und dann zurück. Und auf diese Weise, wenn die Einstellung fehlschlägt aus irgendeinem Grund so - scheitert es, weil es in dem Deck keine Karten ist -

es wird die angemessene Standard zurückzukehren. Das ist nur ein bisschen eine Codierungsstil Sache. Okay? Wir taten das Gleiche mit Tor und Spiel. Okay? Haben Sie Fragen dazu? Ja? [Unhörbar]

>> Paul Hegarty: Gute Frage. Die Frage ist also: Wann verwende ich NS integer oder NSU integer im Vergleich zu int oder sogar NS-Nummer, die ein Objekt die wir nicht über noch gesprochen? Und die Antwort ist es eine Frage des Stils ist. Und wir werden ein wenig über diesen Stil sprechen

und wenn diese Dinge zu benutzen. Hier will ich nicht wirklich eine NS-Nummer zu verwenden, die ein Objekt wenn ich verwende es nur, weißt du, als wenig lokale Sache ähnlich. Sie würden das nie tun. Sie verwenden NS Zahlen im Grunde

sie Methoden zu übergeben. Und selbst dann könnte man Ints passieren, wissen Sie, und schwimmt. So wird es offensichtlich sein werden, wie ich über NS-Nummer sprechen, die wir nächste Woche tun. Okay. So ist das also für Deck. Deck, sehr einfache Klasse auch.

Lassen Sie uns also auf eine andere Klasse zu bewegen, die Karte spielt. Okay? Der Grund, warum ich Sie Karten spielen werde zeigen, Ich möchte nur, um Ihnen zu zeigen, was es sieht aus wie eine Unterklasse zu machen einer anderen Klasse, die Sie geschrieben haben. So Spielkarte ist eine Unterklasse der Karte. Und das ist die spezifische Karte wie König der Herzen,

drei von Diamanten, diese Art von Karte, okay? Nun, es hat Eigenschaften, die spezifisch für eine Spielkarte sind, die die Farbe und Rang. Okay? Der Rang ist wie ein drei, vier, ein Bube, König, nicht wahr? Und der Anzug sein Herz, Karo, Kreuz.

Und ich werde den Anzug als ein einzelnes Zeichen zu repräsentieren - die Herzen Zeichen, die Clubs Charakter. Denken Sie daran, ich den Clubs Zeichen eingegeben Ich denke, in der Karte haben wir vielleicht, dass gezeigt. Ich weiß es nicht. Aber Sie können ein einzelnes Zeichen eingeben.

Unicode hat einen Charakter für jede der vier Farben. Also das ist, was mein Anzug sein wird. Und dann der Rang wird eine Zahl sein zwischen Null und dreizehn. Ist das König? Ja. Stellvertretend für den Rang.

Also das ist, wie ich in meinem öffentlichen API darstellen werde. Und hier bin ich mit Ankündigung NSU integer anstelle von unsigned int. So NSU integer und unsigned int sind fast genau die gleiche Sache. Das einzige, was über NSU ganze Zahl ist, es ist typedef. Es könnte ein wenig anders auf verschiedenen Plattformen sein.

Zum Beispiel sind die neuen iPhone 5s 64-Bit-Verarbeitern. So NSU integer wird ein 64-Bit-int zu sein, unsigned int auf einem iPhone 5. Und es könnte nur über einen 32-Bit einen zurück auf einem iPhone 4 und vor. Okay? Also das ist ein bisschen anders.

So eine kleine int. Wir waren wahrscheinlich nicht repräsentieren ganze Zahlen. Sicherlich hier werden wir nur null bis dreizehn. Wahrscheinlich spielt keine Rolle. Aber, wissen Sie, wir sind nicht ganze Zahlen darstellen, die sind so gigantisch, dass wir das 33. Bit zu verwenden wirst.

Damit Karte im Spiel bemerken wir Karte überschrieben Verfahren Inhalt. Okay? Wir erben Inhalte unserer übergeordneten Klasse. Und durch Standardinhalt liefert nur den Wert von was auch immer ist der Inhalt Eigentum. Aber hier in der Spielkarte werden wir Inhalte zu überschreiben

tatsächlich unsere Inhalte zu berechnen, auf der Grundlage dieser beiden anderen Eigenschaften. Okay? Also sind zwingende wir den Getter des Inhalts so dass es gibt immer einen String - der Inhalt dieser Spielkarte - dass aus dem Anzug und Rang berechnet.

Sie sehen, was wir hier tun? Also sind wir nehmen grundsätzlich die Speicherung von Inhalten - underbar Inhalte - von unserer übergeordneten Klasse und es zu ignorieren weil wir seine Getter sind überschrieben. Okay? Das ist also ein durchaus triftigen Grund, warum wir diese tun Eigenschaften wie gut, weil wir vielleicht eine bessere Möglichkeit haben

Dinge als die Lagerung zu tun. Nun, hier ist eine Art, wie wir sie umsetzen könnte: Wir können nur einen String zurück, okay? NS string, string mit Format wie printf-ing einen String. Sorgen Sie sich nicht zu viel über diese Syntax. Und ich bin printf-ing eine Zeichenkette mit Prozent D und Prozent-Zeichen.

So Prozent D bedeutet integer; Prozent-Zeichen bedeutet, ein Objekt. Okay? Eine String-Darstellung eines Objekts. Und dann bin ich mit nur den Rang und die Farbe. So wäre dies ein Weg sein, mein Inhalt zu tun. Es ist nicht ein sehr guter Weg, weil zum Beispiel, die Herzbube würde 11 Herzen sagen, okay?

Es wird zu sagen, J nicht zumindest, wir wollen J zu sagen, nicht 11. Das ist also nicht eine sehr gute Möglichkeit. Anstatt also werde ich ein Array zu machen das hat all die richtigen Dinge wie ein A für eine, und ein J für 11 und ein Q für 12 und ein K für 13, nicht wahr? So mache ich dieses Array nur hier.

In der Mitte hatte ich zu schneiden, um es fit zu machen, nicht wahr? Und ich habe sogar Null Fragezeichen. Also, wenn Ihr Rang Null ist, es wird sein, wie, Fragezeichen, wie, nicht gesetzt. Sie wissen, ist Ihr Rang im Grunde nicht gesetzt. Und dann kehre ich eine Zeichenfolge, die den Rang nimmt aus

dass Array und auf sie die kleine Anzug Zeichenfolge anhängt, das Herz, oder der Verein oder der Diamant. Jeder versteht das? Ich gebe dir Art diese so können Sie sehen, wie wir das Mischen in der Array-Notation und die Nachricht zu senden, und sie alle Art von mischt sich nahtlos in dort.

Okay? So, jetzt Inhalte liefert J Herzen, oder 5 Diamanten, oder was auch immer. Beachten Sie, dass unsere Rang ist wirklich schön denn wenn unser Rang Null ist, was es zu sein beginnt wenn wir neue Spielkarte sagen - alle Instanzvariablen sind Null, so würde Rang Null -

wir bekommen diese schöne Fragezeichen. Aber unser Anzug beginnt mit Null, und es wäre schön, wenn der Anzug auch zurückgegeben Fragezeichen wenn es ungesagt war, wenn es gleich Null. Also hier bin ich überschreiben nur den Getter von Anzug zu sagen, "Wenn Rückkehr, wenn mein Anzug null ist, dann das Fragezeichen zurückgeben,

sonst, wenn meine Klage nicht Null ist, dann wieder, was der Anzug ist. " Okay? Also ich bin gerade ein bisschen zu schützen meine API um sicherzustellen, dass ich immer Fragezeichen zurückgeben wenn der Rang oder Anzug ist nicht gesetzt. Ja.

>> [Unhörbar] >> Paul Hegarty: Es tut uns leid. wenig auf Anzeichen All - die rot an Zeichen, meinen Sie? Ja. Denke, wir nicht in der Karte, um das bekommen haben. Aber wir haben könnten. Aber denken Sie daran, dass alle Zeichenfolgen, die wir gehen zu arbeiten

mit in dieser Klasse sind String-Objekte, nicht konst Pflege Sterne, nicht wahr? Sie sind String-Objekte. Und der Compiler, wenn Sie ein at-Zeichen vor einem String setzen, es wird für Sie ein String-Objekt machen, okay? Also das ist, was diejenigen, bei Zeichen tun,

sie machen alle diese Strings String-Objekte sein weil wir eine konstante Pflege Stern in einem NS-Array nicht setzen können. NS-Array ist für Objekte, also müssen wir Objekte setzen dort wie NS-Strings. Das sind Objekte. Okay? Gute Frage.

Ja? [Unhörbar] >> Paul Hegarty: Ja. Okay. Das ist eine gute Frage. Wenn wir das Getter benutzt hatte gleich Notation, die wir früher für ausgewählt und angepasst ist, den Namen zu ändern,

wenn wir dann außer Kraft setzen müssen wir den neuen Namen verwenden. Wir müssten, was auch immer ist. Nun, dies ist hier nicht der Fall. Aber ich weiß, was Sie sagen, und ja, Sie würden den neuen Namen zu verwenden. Gute Frage.

Alle anderen Fragen zu diesem Thema? Okay. Damit hilft Rückkehr der Anzug immer Fragezeichen wenn der Anzug Null ist oder nicht gesetzt. Lassen Sie uns auch zum Schutz der Menschen den Anzug Einstellung zu etwas falsch gemacht. Okay? Lassen Sie uns nur Leute lassen Sie den Anzug mit dieser Eigenschaft festgelegt,

die öffentliche Setter der Immobilie. Wir werden nur damit die Menschen den Anzug gesetzt eine der vier Farben zu sein. Also habe ich nur on the fly in der Mitte erstellt dort eine Reihe von diesen vier Farben. Und dann verwende ich diese Methode Objekt enthält;

Welche Klasse denken Sie enthält Objekt ist von diesem Bit auf? Jemand? [Unverständlich] >> [Unhörbar] >> Paul Hegarty: Es ist ein NS-Array-Verfahren, genau. So enthält Objekt ist ein NS-Array-Verfahren. Ich schicke es an das Array, das ich genau dort an Ort und Stelle erstellen.

Das Array, das Herz hat, Diamanten, Spaten und Clubs in ihm. Und ich frage nur: Haben Sie diese Zeichenfolge enthalten? Und das enthält Objekt wird um den Inhalt zu vergleichen dieser Zeichenfolge gegen diese alle mit einem Verfahren gleich. Eigentlich, es wird zu sagen, gleich alle vier von ihnen

mit dem Anzug als Argument; nicht gleich bespannen - ist gleich. Und in String gleich wird durch den Aufruf implementiert ist gleich wenn das Argument String ist eine Zeichenfolge. Wie auch immer, genauer, als Sie wahrscheinlich es brauchen. Aber dies offensichtlich schützt es.

So gibt es keine Möglichkeit können wir unsere internen Anzug Speichervariable gesetzt zu irgendetwas außer für die vier Farben. Ja? [Unhörbar] >> Paul Hegarty: Gute Frage. Ihr seid richtig oben drauf.

Also jedes Mal, wenn ich das At-Zeichen verwenden eckige Klammer öffnen - die blaue - ein Array zu erstellen, das ist die Schaffung tatsächlich ein neues Array jedes Mal. Okay? Weil ich Ihnen gesagt, dass das am Zeichen eckige Klammer und all das Array Zeug ist wirklich nur das Aufrufen von Methoden? Nun, das Aufrufen einer Methode wie alloc init mit Array

mit Gegenständen oder so ähnlich. Recht? So ist es schafft es. So wäre es schön, es auszuziehen, und wir werden das zu tun. Obwohl wieder darauf achten, nicht zu preoptimize. Es wäre wahrscheinlich nicht anders machen. Ich gehe nur um es zu bewegen, um meinen Code sauberer zu machen;

Ich werde es nicht für jeden Leistungs Grund ausziehen. Ja? >> [Unhörbar] >> Paul Hegarty: Ja. >> [Unhörbar] >> Paul Hegarty: Die Frage ist: Würde LLVM nur darauf achten,

dass, dass, optimieren für Sie aus? Und es wäre wahrscheinlich nicht, weil das ist eine Nachricht senden; es ist nicht sicher, was es möglicherweise Nebenwirkungen davon sein. Aber in jedem Fall, wir werden es nur tun nur unser Code aussehen sauberer zu machen. Und die Leistung wäre hier zu vernachlässigen.

Wir sprechen hier über UI. Es ist nicht einmal in der Nähe. Eine Sache zu beachten, obwohl, bevor wir das tun, ist da wir sowohl die Setter und Getter Anzug implementiert haben, wir jetzt tun das At-Zeichen synthesize erforderlich. Okay? Mit anderen Worten, in der Regel haben wir nicht

dies bei der Anmeldung synthesize zu tun. Es wird für uns getan hat. Aber wenn wir sowohl die Setter implementieren und der Getter, jetzt tun wir. Es ist einfach zu tun, weil es immer dieses genau die gleiche Form ist. Aber wir haben es zu tun.

Okay. Also hier ist - lassen Sie uns tun, was wir sagen. Lassen Sie uns diese kleine Reihe von Klagen nehmen wir dort haben und in einem anderen Verfahren setzen. Nun, wieder, ich bin keine Leistung bekommen dies zu tun, okay? Ich erhalte nur Code Sauberkeit, indem Sie diese jedes Mal wenn ich nenne gültig Anzüge, - weil ich immer noch bin

es geht um es wieder zu schaffen. Nun könnte ich eine statische Variable verwenden. Dies ist C. ich dieses Array speichern könnte. Begann gleich Null ist. Wenn es gleich Null ist, setzen Sie ihn auf diesem Array, und dann würde es sie nur einmal erstellen.

Aber sei vorsichtig. Auch hier Code Sauberkeit und verständlicherweise zehnmal wichtiger als Leistung wie diese. Also, wenn du gehst, gültig Anzüge anrufen in der inneren Schleife tausende Male,

es geht auf die Materie nicht wirklich. Aber sobald ich, dass nach oben in ein anderes Verfahren, diese Art der Methode, die ich zog es ist ein wenig anders. Beachten Sie es ein Plus hat. Sie sehen ein Plus dort anstelle eines Minus es beginnt? Plus-NS-Array gültig passt?

Okay. Ein Plus-Methode ist eine Klassenmethode. Okay? Das bedeutet, dass Sie es in die Klasse schicken, nicht auf eine Instanz eines Objekts. Gut? Also, da Sie es nicht zu einer Instanz zu senden, Sie können keine Instanzvariablen oder ähnliches verwenden.

Sie können nur gerade ein bisschen allgemeine Dinge zu tun. Das einzige, was wir wirklich und Methoden für Klassenmethoden, ist zwei Dinge wirklich: Erstellen Dinge vorherigen Folie wie in, wenn wir String mit Format hatte - das ist eine Klassenmethode, die eine Zeichenfolge war für uns zu schaffen; und dann auch Dienstprogramm Methoden wie diese,

wie die Rückkehr Konstanten und Dinge, die Sie wissen, unsere Klasse will und Dienstmethoden. Aber hier ist ein Beispiel dafür. Und die Art und Weise rufen wir die Klassenmethode - Sie haben mir schon ein paar von ihnen nennen gesehen - aber hier ruft es hier setzen wir eckige Klammer zu öffnen,

der Name der Klasse, der Name des Verfahrens. Und wieder, könnte es Argumente haben. Es ist genau wie jede andere Methode. Aber jeder das verstehen? Okay. Und wenn Sie zurück gehen und schauen ein paar Dias und Sie sehen, offene eckige Klammer NS string, string mit dem Format,

gleiche genaue Art der Syntax. Okay? Also das ist, was eine Klassenmethode aussieht. Auch für die Dinge im Grunde die Schaffung und für Dienstmethoden. Und wir werden über den Unterschied von sprechen: Wenn schaffen wir etwas

mit einer Klassenmethode im Vergleich zu alloc init? Wir werden darüber bald sprechen. Ich werde auch gültig Anzüge öffentlich machen. Und auf diese Weise Menschen, die meine Spielkarte verwenden wissen, was die gültigen Anzüge sind. Und alles, was ich tun müssen, ist es in der Header-Datei setzen.

Boom, es ist jetzt öffentlich. Okay? Also lassen Sie uns eine ähnliche Sache tun hier mit diesen Rang Saiten. Okay? Also werde ich die Reihen Saiten aufzunehmen - dass Array von Rang Saiten ganz vorne mit dabei - und ich werde das in einer Klassenmethode zu setzen.

Okay? Und auch dies ist zur besseren Lesbarkeit, nicht für die Leistung. Denn jedes Mal, wenn ich Rang Strings nennen, es ist immer noch im Gange das Ding wieder zu schaffen. Und ich es dann rufen Sie stattdessen dort oben. Und ich werde nicht Rang Saiten selbst öffentlich zu machen,

aber ich werde eine andere Klasse Methode namens max Rang zu machen, das sieht einfach, wie viele Strings sind in der Rang Saiten. Und ich werde das als öffentliche Methode zurückzukehren. Es gibt also drei Klassenmethoden für Sie Ihre Zähne zu sinken in - zwei von ihnen öffentlich, ein nicht. Gut.

Und so sind sie alle Hilfsmethoden, nicht wahr? Wir Zugriff auf keine Instanzvariablen in jeder dieser Methoden, okay? Das ist der einzige Grund, warum ich die bin zeigt, so dass Sie nur sehen, was eine Klassenmethode aussieht. Wir könnten auch die Setter von Rang außer Kraft setzen nur

um hier vollständig sicherzustellen, dass es nicht zulässt einen falschen Rang wie Set Rang Set 15 - gibt es keine solche Karte als 15. Also lassen Sie uns dafür sorgen, dass der Rang kleiner als der max Rang, Das ist das Dienstprogramm Methode, die wir gerade getan. Okay? Ist alles, was für Sie zusammen kommen, sinnvoll?

So ist diese Art von Referenzmaterial. Sie haben diese Folien, die alle Anmerkungen haben von all den Dingen, ich sage. So fühlen sich frei zurück und schauen Sie es zu gehen und sich daran erinnern, über all diese NS-Array, Syntax, und alle Klassenmethoden, all das Zeug.

Okay. Das letzte, was wir gehen zu sehen bei der init-Methode Geschäft. Okay? So werden wir eine andere Klasse zu haben, hier genannt Spielkartendeck. Gut? Und eine Spielkarte Deck ist eine Unterklasse von Deck.

Gut? Und es hat keine öffentliche API. Es wird nur eine Methode überschreiben dass es erbt indirekt von NS-Objekt - in Ordnung, NS-Objekt über Deck, die es nicht berühren - den ganzen Weg Karten-Deck zu spielen.

Und das Verfahren wird init genannt. Okay? Das ist also die gleiche init, gleiche Art von Verfahren dass, wenn wir das Array erstellt - dass änderbaren Array gesagt, wir NS änderbaren Array alloc init. So wird jemand diese Spielkarte Deck init-Methode aufrufen - nämlich Sie in Ihre Hausaufgaben gehen diese zu nennen

von Spielkartendeck alloc tun, und dann auf der Außenseite, init. Okay? Und das ist, wie du gehst, eine Spielkarte Deck zu erstellen. Und das ist, wie wir die meisten Instanzen von Objekten erstellen - nicht alle. Manchmal tun wir Dinge wie die NS-String, String mit Format.

Aber die meiste Zeit - mehr als die Hälfte der Zeit - wir alloc und dann auf der Außenseite init. Okay. Hören Sie gut zu: Nie, dass alloc Sache nennen ohne eine init um ihn herum gewickelt wird. Okay? Nicht immer das tun. Das macht keinen Sinn ein Objekt zugeordnet haben

in dem Haufen, die initialisiert nie gewesen ist. Haben Sie immer, dass verschachtelt. Und umgekehrt: rufen Sie nie, dass die init Ausnahme denn wenn Sie es sich um eine alloc wickeln. Und auf jeden Fall rufen Sie nie, dass init mehr als einmal. Okay? Und wenn Sie meine Regel gehorchen nur nannte es gewickelt

um eine alloc, können Sie es nicht nennen als einmal. Okay? Init ist nicht so etwas wie Sie re-init kann. Init geschieht einmal direkt nach alloc, und das ist es. Okay? Das ist eine harte und schnelle Regel, die wir niemals brechen. Okay? So hörte man es hier. Vergessen Sie nicht.

Gut. Schauen wir uns die whacky Rückgabetyp dieser Methode init suchen, okay? Man könnte denken, diese Methode init eine Spielkarte zurückgeben soll Deck Stern, weil es eine Art ist die Initialisierung und vielleicht gibt es selbst. Und in der Tat, init immer selbst zurückkehren, okay?

So wird init immer selbst geht zurück. Okay. Mehr whackiness gibt, die ich beschreiben werde. Nur für die Bequemlichkeit, es ist immer selbst zurück, so dass Sie tun können, wie, Kartendeck alloc init spielen, schickte er eine Nachricht. Okay? So ist es nur Bequemlichkeit, dass es sich von selbst zurückkehrt. Aber es kann nicht wirklich seine Rückkehr Art Karte zu sein Spiel haben

Deck Stern, weil es geerbt diese von NS-Objekt. Und NS Objekt bereits als NS-Objekt Stern definiert. Sehen Sie? So ist es irgendwie komisch dass Sie eine Methode, deren Rückgabewert sind vererben würde jedes Mal zu ändern Sie, wissen Sie, es überwog. So erfand sie diese neue Sache - das ist neu für iOS 7,

durch die Art und Weise - Instanz-Typ bezeichnet. Und welche Instanz Typ bedeutet, dieses geht ein Objekt zurück, die von der gleichen Instanz ist - gleichen Typs, derselben Klasse - als das Objekt Sie erhalten diese Nachricht an. Okay? Das macht durchaus Sinn für inits.

Und in dieser Klasse, die wahrscheinlich ist alles was du gehst dies hier zu verwenden. Also, wenn Sie nicht wirklich verstehen, was ich gerade gesagt habe - es ist in den Folien erklärt - aber wenn Sie nicht wirklich verstehen, weiß nur, dass, wenn Sie einen Initialisierer tun,

es wird Instance-Typ als Rückgabetyp zurück und du wirst immer selbst zurück. Okay? Nun, auch nehmen nur mein Wort für sie. Wir werden diese nächsten Zeilen Code zu tun, wie gut denn sie sind wirklich seltsam. Das erste Zeile, selbst gleich Super init, das ist seltsam.

Das ist super komisch. Okay? Zuweisen von etwas Selbst in Objective-C - nur das nie tun, außer für dieses eine Mal und das ist in Ihrem init. Okay? Sie nehmen sich selbst und Sie es zuweisen auf Ihre Super initializer Aufruf

so dass der Superklasse wird initialisiert. Warum wir das Ergebnis selbst zuordnen? Es ist eine Art der alten Geschichte , warum hat dies für eine lange Zeit durchgeführt worden ist. Im Grunde genommen sind wir die Überprüfung der Rückkehr unserer Super init um sicherzustellen, dass korrekt initialisiert es.

Da jederzeit, wenn Ihr initializer kann nicht initialisiert werden selbst, sollte es Null zurück. Okay? Und das wissen lässt, jeder jede Ihrer Subklassen oder jemand versucht, alloc und initialisieren Sie, Sie konnte nicht einen wohlgeformten Objekt erstellen. Okay? So können Sie sehen, wie Sie diesen Code, so seltsam es ist -

Selbst gleich Super init, und dann, wenn selbst, Ich werde mich zu initialisieren, selbst zurückkehren - das wird, um sicherzustellen, dass ich nicht einmal versuchen zu initialisieren mich, wenn meine übergeordnete Klasse, wenn ich seine init nennen, Sie wissen, können sich nicht initialisieren. Okay? Also tun Sie es einfach.

Wenn Sie es nicht verstehen, keine Sorge, nicht zu viel darüber nach. Mach es einfach. Nun, hier ist eine Sache wir reden etwa ohne Argumente init. Es ist möglich, initializers mit Argumenten zu haben denn manchmal braucht man Argumente

richtig, eine Klasse zu initialisieren. Und wir werden darüber ein wenig mehr am Montag zu sprechen. Okay? Also heute werden wir nur zu Art von nackten Knochen init. Was bedeutet dies init tun müssen? Was brauche ich, um einen wohlgeformten initialisiert spielen zu tun haben, Kartendeck?

Nun, eine Spielkarte Deck hat 52 Karten in es, eine von jeder Art von Karte. Okay? King of Clubs, drei Diamanten - alle 52 von ihnen. Also muss ich nur an alle Anzüge zu iterieren und dann iterieren durch alle Reihen, und erstellen Sie eine Karte, und fügen Sie es mir.

Also hier ist mir durch die Anzüge laufen, Iterieren durch die Reihen. Jeder mit dem kühl? Dann werde ich Spielkarte zu importieren, weil ich gehe eine Spielkarte, Spielkarte alloc init zu erstellen. Dann werde ich zu setzen

dieser Karte Rang, setzen diese Karte Anzug. Rang und Farbe sind meine kleine Iterationsvariablen dort. Und dann werde ich es mir hinzuzufügen. Ich bin ein Deck, das ist also völlig in Ordnung. Jeder kühl mit diesem Code? So, jetzt bin ich eine wohlgeformte Spielkarte Deck und ich kann verwendet werden,

zufällige Karten und all das Zeug zu ziehen, was müssen Sie für Ihre Hausaufgaben machen. Okay? Und in der Tat, für Ihre Hausaufgaben sind Sie gehen zu haben alle vier dieser Klassen zu geben. Ich möchte Sie Erfahrung Eingabe Klassen zu bekommen, Eingabe einer Sache, zu beobachten, wie Xcode bei Ihnen beschwert

wie Sie vertippen Dinge, und solche Sachen. Und dann wirst du mit Spielkartendeck und Spielkarte zu werden. Nun, spielen Karten-Deck und Karte wirklich sind die beiden wichtigsten sind Sie gehen zu benutzen, um Ihre Hausaufgaben machen. Okay? Fragen dazu?

Okay. So ist, dass es für die Folien. So, jetzt werde ich eine große alte Demo zu tun. Und diese Demo wird zu integrieren, alles, was Sie bisher gesehen habe, okay? Vor allem, dass MVC Sachen haben wir darüber gesprochen, wie Zielaktion, wissen Sie, fallen die Ziel

und Schießen die Aktion oder den grünen Pfeil Auslass dass die Punkte in die andere Richtung. Okay? Wir werden Ihnen zeigen, was dass sieht tatsächlich aus wie in Xcode. Ich denke, wenn ich fragte, wer von euch Xcode getan haben, fast jeder einzelne von Ihnen aufgeworfenen Ihre Hände.

Also werde ich nicht zu viel Zeit damit verbringen, im Gespräch über alle Tasten in Xcode. Ich glaube, ich schnell über diejenigen bestehen werden. Aber wenn Sie nicht Xcode verwendet haben, ist es in sehr viel Detail in den Vorlesungsfolien. Es ist eine Art dieser exemplarischen Vorgehensweise.

By the way, wenn Sie folgende entlang in den Vorlesungsfolien, meine Demo ist nicht genau sein würde wie das, was ist in den Folien. Die Folien decken ein wenig mehr, als ich abdecken kann in 40 Minuten hier. Und es ist auch Referenzmaterial.

Okay? Also, wenn ich heute etwas tun, in dieser Demo und Sie sind wie, "Oh, wie hat er das getan?" wenn Sie in den Folien zu schauen gehen, wird es Ihnen sagen. So fühlen sich nicht wie: "Ich habe zu wütend schreiben jede Taste nach unten klicken, er wird tun in den nächsten 40 Minuten. "

Auf keinen Fall. Okay? Folgen Sie in diesen entlang gleitet, wenn Sie wollen, oder schließen Sie einfach Ihren Laptop, und beobachten Sie, und lassen Sie es sinken in, weil Sie zu haben, zu reproduzieren gehst, was ich tue in den nächsten 40 Minuten für Ihre Hausaufgaben. Und diese Folien sind Sie gehen zu Fuß

durch Schritt für Schritt, wie es geht. So fühlen sich nicht wie Sie etwas tun müssen, gerade jetzt aber lassen Sie dies alles Waschbecken in. Bekommen Sie ein Gefühl für das, was vor sich geht. Okay? Und dann, wenn Sie sich hinsetzen, es zu tun, Sie werden durch sie geführt werden.

Nächste Woche werden wir viel mehr über Objective-C zu sprechen, einige dieser detailliertere Fragen zu beantworten wie NS-Nummer und einige dieser anderen Dinge, die Menschen fragen. Und wir werden über einige der spezifischen Dinge reden über Objective-C wie dynamische Bindung und Protokolle, und Dinge, die man im Allgemeinen nicht sehen, wie viel

in anderen Sprachen oder existieren nicht in anderen Sprachen. Also werden wir versuchen, und das alles abdecken. Also bis zum Ende der nächsten Woche, du bist bis Objective-C zu beschleunigen in. Sie beginnen mit Xcode wirklich laufen. Und so ist die Woche danach können wir wirklich etwas tun beginnen,

Sie wissen, hohe Leistung iOS 7 Sachen. Okay. Also hier Demo. [Unverständlich], dass. Gut. Also die Demo werde ich in Xcode zu laufen. Also werde ich nur Xcode zu starten.

So erhalten Xcode Sie, indem Sie - gehen auf den Mac App Store. Das ist das, was hier unten, nicht wahr? Holen Sie sich das App Store auf Ihrem Mac, und Sie nur für Xcode, finden sie. Es ist kostenlos. Sie laden Sie es und führen Sie es.

Okay? So einfach ist das. Dies ist, was es wird aussehen, wenn Sie es zuerst bringen, diese Splash-Screen hier. Da das Quartal weitergeht, wird diese füllen mit all den Projekten, die Sie tun. Du bist wahrscheinlich daran gewöhnt, wenn Sie Xcode wissen.

Und was werden wir heute zu tun ist, um ein neues Projekt erstellen. Sie können entweder ein vorhandenes Projekt aus Quellcodeverwaltung überprüfen oder Sie können eine neue erstellen. Und so werden wir eine neue zu erstellen. Wenn wir also eine neue erstellen, will es uns ein wenig zu geben, Hilfe, indem sie eine Vorlage für verschiedene Arten zu erstellen

Anwendungen wie ein openGL Spiel. Okay. Es wird noch einige Rahmen für das für Sie erstellen. Master-Detail-Anwendungen, was wir gehen später im Quartal zu tun, obwohl wir gehen den gesamten Code zu bauen uns; wir werden diese Vorlage nicht verwenden.

Und dieses eine einzige Ansicht Anwendung hier ist im Grunde ein Single MVC, das ist, wie wir gehen alles angefangen unserer Anwendungen in diesem Klassenzimmer - mit einem einzigen MVC. Dann werden wir mehr MVCs und bauen hinzuzufügen. Okay? Das ist also Ihre grundlegende einzelne MVC-app. Also werde ich das zu klicken.

Und hier, es wird für einige Informationen über sie zu fragen, wie das, was wollen Sie diese App zu nennen? Dies ist ein Card-Matching-Spiel, das ich entschieden haben, zu nennen Machismo, okay? Damit geht der Name unserer App nur zum Spaß zu sein. Und Organisation Name kann alles, was Sie wollen sein.

Es wird in den Headern zu erscheinen aller Klassen, die Sie erstellen. Also ich mache meine Stanford University sein. Sie können Ihr Bob Game House oder was auch immer zu machen sein. Diese Kennung sollten Sie eindeutig sein. Also ich habe edu.Stanford.cs193p.instructor.

Möglicherweise müssen edu.Stanford.cs193p dot Ihre SUNET ID. Das wird ganz eindeutig. Diese Reverse-DNS ist ein wirklich guter Weg, einen eindeutigen Namen zu erstellen. Und es geht um einen eindeutigen Namen für diese App zu erstellen

durch diese mit den Namen kombiniert. So können Sie sehen, es ist getan, dass hier, dieses Bundle-Kennung. Und dann diese Klasse Präfix - Diese Vorlage wird eine Ansicht und einen Controller für uns zu schaffen. Und das sagt: "Was wollen Sie den Namen Ihrer Controller-Klasse zu sein? "

In der Standardeinstellung aufgerufen werden, es wird auf "View-Controller", okay? Aber wenn Sie etwas hier wie Typ "Kartenspiel", jetzt es geht genannt "Kartenspiel-View-Controller" werden Das ist ein wenig besseren Namen für uns. Also das ist nur das Präfix, es wird auf den Namen zu setzen Ihrer Controller, der es für Sie erstellt.

Und dann endlich hier können wir eine App erstellen hier nur für iPad, oder einfach nur für das iPhone, oder Universal-App das wird auf beiden Plattformen laufen. Wenn Sie nun eine Universal-App erstellen, haben Sie immer noch zu entwerfen separat Ihre UI denn wenn Sie mehr Bildschirm Regeln haben, Sie gehen einfach

eine andere Benutzeroberfläche zu entwerfen. Okay? iPad ist nicht nur ein großes iPhone. Sie können viel mehr Dinge zu tun wenn Sie mehr Bildschirm Immobilien haben. Aber Sie können noch viel von Ihrer MVC haben geteilt, rechts, denn das iPad könnte wenig subareas haben, die in MVC sind

Das sind genau die gleichen wie auf einem iPhone oder sehr, sehr ähnlich. So unterstützt vollständig in iOS 7 Apps bauen dass Ziel beide Plattformen und hat große Werkzeuge für die Vermietung bauen Sie Ihre zwei UI getrennt und teilen Sie unter alle MVCs. Okay? Wir gehen iPhone zu tun, nur hier nur

denn es hält den Bildschirm klein und ich nur haben so viel hier Immobilien. [Unhörbar] >> Paul Hegarty: Ja. Die Frage ist also: Wenn ich auf meinem iPad und ich führen eine Anwendung, die iPhone ist nur, ja,

gibt es im Wesentlichen ein Emulationsmodus das wird Art machen von einem großen iPhone-förmigen Ding auf dem iPad-Bildschirm. So werden wir iPhone hier zu tun. So, das war es. Ich werde nächstes getroffen. Weiter zu wissen, es will,

"Wohin gehst du es dieses Projekt gesteckt?" Ich empfehle es in Ihrem Home-Verzeichnis setzen - in einem Verzeichnis "Entwickler" bezeichnet in Ihrem Home-Verzeichnis. Okay? Es sei denn, vielleicht arbeiten wir auf verschiedenen Klasse. Vielleicht haben Sie die CS 193P

in Ihrem Home-Verzeichnis und dann andere Klasse. Aber unterm Strich: Legen Sie es in Ihrem Home-Verzeichnis; tun Sie es nicht, wie, in root oder irgendwo ähnlich. Das hat in der Vergangenheit Probleme verursacht. Aber ein großer Platz, es hier zu setzen. Das ist mein Home-Verzeichnis, CS 193P gibt.

Ich sehe, Home-Verzeichnis, Entwickler. Dies ist, wo ich werde es zu setzen. Ich habe keine Projekte vor. Das kleine Ding hier unten, Quellcodeverwaltung, wir werden darüber sprechen. Es ist wirklich schön in Xcode integriert, aber wir nicht gehen

heute darüber zu reden. Also lassen Sie diese unclicked. Und hier ist also unser neues Projekt. Sie können sehen, es uns diesen Bildschirm zeigt, was Sie bekommen, zu, indem Sie oben auf dieser ganz oben Sache. Also das ist eine Art, wie unsere Projekteinstellungen.

Und es gibt eine ganze Reihe von Einstellungen hier. Wir reden, all dieses Zeug zu sein, wie das Viertel geht weiter. Aber heute werden wir nicht über irgendetwas davon zu sprechen weil wir auf unsere MVC konzentrieren wollen. Und unsere MVC, dies hier, main.storyboard, ist unserer Ansicht nach. Okay? Das ist unserer Ansicht nach unserer MVC.

Und dann sieht man diese Karte Spiel-View-Controller M und H? Das ist unser Controller. Es gibt hier kein Modell. Ihr Modell wird diese vier Klassen zu sein - Deck, Karte, Karte zu spielen, Karten-Deck zu spielen - das wird Ihr Modell zu sein.

So werden Sie, dass in eingeben. Ich werde Sie am Ende zeigen, wie das zu tun. Das kleine Ding hier, Kartenspiel [unverständlich] Punkt H und M, werden wir noch kurz zu sprechen, vor allem, wenn wir anfangen zu sprechen über Dinge wie Multitasking. Aber Ich mag nur diejenigen aus dem Weg zu bewegen.

So oft ich sie hier in diesem unterstützenden Dateien-Ordner abgelegt. Und Sie können nur eine beliebige Datei abholen, nebenbei bemerkt, und verschieben Sie sie überall Sie hier, um die Art wollen Reinigen Sie Ihre Ansicht. So, hier habe ich meine Ansicht bekam und mein Controller nur hier zeigt. Okay? So gehen wir direkt in den Ansichts

und sehen, wie das aussieht. Also hier ist meine Ansicht. Es ist eine leere iPhone 5 Größe, nicht wahr? Ein groß und dünn Blick. Und es ist leer. Nichts Neues.

Es ist weiß. Dieser Bereich auf der linken Seite, übrigens, wo wir geklickt auf diese Dateien ist, dass die "Navigator" genannt. Und Sie können nicht nur hier alle Ihre Dateien navigieren, aber Sie können Ihre Haltepunkte navigieren und Probleme zu bauen, und Ihre Klassenhierarchien.

Alles, was hier Zeug. Also noch einmal, die meisten von euch wissen, Xcode, so wissen Sie wahrscheinlich am meisten von diesem Zeug. Wir werden alle diese werden Demonstrieren wie das Viertel geht weiter. Und dieser Bereich hier ist die "Dienstprogramme Bereich" genannt. Und das ist, wo man im Grunde Detail herausfinden

über das, was hier los ist. So Inspektoren für Attribute und Abmessungen und Anschlüsse, und Dinge wie das hier gehen. Und das ist auch, wo Sie die Dinge in die Länge ziehen kann dass Sie gehen zu verwenden, um Ihre Benutzeroberfläche zu bauen weil wir unsere Ansicht zu bauen ganz grafisch gehst.

Okay? Wir gehen nicht, Code zu schreiben, zum größten Teil, unserer Ansicht nach zu bauen. Da das Quartal weitergeht, werden wir ein wenig mehr darüber zu erfahren, wie Unserer Ansicht nach in Code zu bauen, aber wir gehen zu beginnen aus nur rein grafisch ziehen Dinge, die unsere Ansicht zu tun und Verdrahtung sie.

Und wir werden unseren Code in unserem Controller setzen. Diese beiden Seiten können mit diesen beiden Tasten ein- und ausgeblendet werden. Sehen? Sie können diese verstecken. [Unhörbar] Dies könnte auch dieser Bereich erscheinen hier, dieser kleine Knopf hier unten. Dies wird als "Dokument Umriss" genannt.

Das ist wirklich praktisch, Dandy. Aber noch einmal, wir werden es nicht heute darüber sprechen. Wir können nur so viel auf einmal zu sprechen. Das Dokument Umriss. Dies zeigt nur, Sie alle Instanzen von Objekten Ihrer Ansicht nach in einer gemeinsamen Umrissform.

So kann man wirklich leicht finden und deren Beziehungen zueinander. Das andere, was Sie tun können, ist, ich will nicht dieses iPhone 5 Größe Sache, weil mein Bildschirm ist niedriger Auflösung hier so funktioniert es auf den Projektor. Also werde ich diesen kleinen Knopf klicken hier unten,

was mich reduziert sich auf iPhone 4 Größe nach unten. Okay? Oder iPhone 4S. Jetzt bin ich groß und dünn. Aber Sie können hin und her klicken und sie her bewegen zurück. Und ich versuche nur, hier ist alles fit auf dem Bildschirm zu machen. Okay. Also lassen Sie uns tauchen gerade nach rechts in hier den Aufbau unserer Ansicht.

Was unserer Ansicht geht heute zu sein, ist eine einzelne Karte mit einem Ass von Clubs auf ihn geschrieben wird. Okay? Das wird es sein. Und ich werde auf der Karte zu klicken, um der Lage sein, und es wird umdrehen, zeigen die Rückseite der Karte, und klicken Sie dann auf auf es wieder, wird es klappen wieder das Ass zu zeigen mir

der Club wieder - hin und her, hin und her. Okay? Und Ihre Hausaufgaben sein wird, es zu machen, so, wenn die Karte nach oben klappt zeigt es nicht das Kreuz Ass, es zeigt eine zufällige Karte aus dem Stapel gezogen. Okay? Das wird Ihre gesamte Hausaufgaben zu sein, die durch ist Montags.

Okay. Also lassen Sie uns dies tun. Wirklich einfach. Wir gehen in diesem Bereich genau hier, um dieses Objekt-Bibliothek. Okay? Das ist der dritte Knopf hier, Objektbibliothek zeigen. Und das ist, wo alle unsere Objekte sind. Wenn man sich hier und Sie diese Objekte nicht sehen,

es könnte einen Klick auf Ihrer Ansicht nach wert sein. Manchmal will Xcode zu wissen, was das Ziel ist dass Sie gehen die Dinge in zu ziehen. Also, wenn Sie darauf klicken, dann werden Sie diese Dinge zu sehen. Und wir werden nur eine dieser Tasten direkt hier zu greifen. Also werde ich diesen Knopf zu holen und es in die Länge ziehen.

Und beachten Sie, wie ich es in die Länge ziehen, diese kleinen blauen Linien erscheinen - diese Richtlinien. Okay. Diese Richtlinien sind super wichtig. Sie scheinen wie ein Komfort zu helfen, legte es Sie direkt in der Mitte oder rechts in der rechten Ecke.

Und sie sind, aber sie sind wirklich wichtig für die Gewährleistung dass alle Dinge aus Ihrer Sicht sind so eine Art, wie, Standard Raum auseinander, nicht wahr? Und gegen Kanten gesäumt. So dass die Benutzer von einer Anwendung zur anderen gehen, Dinge werden alle durch vorhersagbare Leerzeichen getrennt werden

und alles wird im Einklang stehen. Es ist wirklich wichtig. Und es gibt einen Mechanismus - Sie diesen Schalter hier sehen können, Verwenden Sie Auto-Layout, das in iOS 6 eingeführt wurde und erheblich verbessert in iOS 7, vor allem in Xcode - das erlaubt, wenn die Benutzeroberfläche Größe ändert,

wie es ein iPhone aus zu sein 4 zu einem iPhone 5 geht, oder es dreht sich von der Vertikalen zum Sein horizontal, oder es ist auf einem iPad in einen größeren Raum. Für alle Tasten und alles Art von Bewegung in eine neue Position, die Sinn macht oder zumindest die meisten von ihnen, nicht wahr?

Und dann vielleicht könnten Sie ein paar von ihnen mit der Hand bewegen müssen, je nachdem, was los ist. Aber es meist automatisch legt es aus. Und das ist wirklich wichtig, weil ich sicher bin Geräte werden weiterhin Größen werden unterschiedliche wie neu, Sie wissen, kommen Geräte im Laufe der Jahre.

So tun Auto Layout ist wichtig, und diese blauen Richtlinien sind die Nummer eins wichtigsten was für die automatische Layout. Wir gehen Auto-Layout im Detail zu decken, und es gibt eine Menge zu. Alle diese Tasten gedrückt haben hier mit Auto-Layout zu tun.

Aber diese blauen Richtlinien bekommen, dafür, dass Sie die Dinge fallen mit mindestens einer blau-Richtlinie irgendwo ist wirklich wichtig, zu Art erhalten Sie den richtigen Weg gehen mit der richtig Auto gelegt UI. So haben wir auf diese Schaltfläche hier.

Aber vor - und natürlich können wir hier übergehen dazu ist die Attribute Inspektor und klicken Sie darauf. Und wir werden alle Arten von Attributen zu sehen. In der Tat, wenn ich ausblenden, Tonnen und Tonnen der Attribute für diese Schaltfläche. Okay? Nicht nur die Taste selbst,

aber tatsächlich seine Oberklasse hat Attribute. Control ist der übergeordneten Klasse, und dann Ansicht ist übergeordnete Klasse der Kontrolle und es hat Attribute. Okay. Das ist also ein zielorientierte Inspektor dass zeigt alle Attribute aller Dinge

durch die Vererbungshierarchie. Und was passiert hier ist wir ein wirklich Bearbeitung Instanz eines hier Taste. So sind wir nicht - und ich weiß, in einigen Systemen Sie auf die Schaltfläche Layout, legen Sie die Größe, und Sie die Attribute.

Und dann wissen Sie, hinter den Kulissen ein Haufen Code wird erzeugt, um die Schaltfläche zu erstellen. Das ist nicht das, was wir hier tun. Wir Bearbeitung tatsächlich Live-Objekte. Sie werden im Wesentlichen gefriergetrocknet werden. Und dann, wenn die App läuft, Wasser hinzufügen, sie zum Leben erweckt, okay,

mit ihren Attributen gesetzt, und alle Größen und Positionen, und alle ihre Auto-Layout-Informationen in dem Objekt. Okay? So ist es ein wenig anders, als Sie verwendet werden könnten, in einigen anderen Systemen. Wie auch immer, bevor wir die Attribute dieser Schaltfläche zu bearbeiten, aber lassen Sie uns unsere Hintergrund ändern

denn dies ist ein Kartenspiel. Und die meisten Kartenspiele sind, wie, grünem Filz, nicht wahr? Also lassen Sie uns unser Hintergrund machen mehr wie ein grüner Filz. So bin ich nur auf dem Hintergrund gehen zu klicken, die diese Ansicht ist hier, und Sie können seine Eigenschaften zu sehen. Also werde ich ein paar zu ändern -

oder eine seiner Eigenschaften - was der Hintergrund ist. Sie sehen diese weiße Farbe Hintergrund hier? Also, wenn ich auf diese klicken, habe ich einige vor kurzem verwendeten Farben. Ich habe alle diese Art von schwarzen und weißen Farben. Und ich habe auch andere. Und ich bringen andere, die Zeichenstifte bringt, okay?

Es bringt auch andere Möglichkeiten, bis zu Farben wählen, aber Ich mag die Zeichenstifte. Okay? Und ja, wo sind meine Zeichenstifte? Da sind sie. Also lassen Sie uns eine grüne holen, wie, Moos ein gutes grün ist. Klee. Ich bin ein bisschen wie Moos besser.

So ist diese Art von einem Kartenspiel Hintergrund. Und das ist es. Deshalb haben wir die Hintergrundfarbe unserer Aussicht. Okay? Und all das Attribut Einstellung ist wie folgt aus: Sie legen es einfach und vergessen. Lassen Sie uns also auf den Button und seine Eigenschaften zurückgehen.

Okay. Die Schaltfläche Ich möchte wie eine Karte zu suchen. Nun, eine Schaltfläche in iOS 7 sieht im Grunde eine Menge wie ein Hyperlink auf einer Webseite, genau wie die Taste funktioniert recht. Okay? Das blaue Taste. Das ist nicht wirklich angemessen für das, was wir wollen.

Wir wollen, dass es wie eine Karte mit einem kleinen runden rect aussehen und einem weißen Hintergrund, nicht wahr? Und ich möchte, dass die Rückseite der Karte, die gleich aussehen aber haben eine Art von Design auf sie oder so ähnlich. So ist die Art, wie ich werde, das zu tun ist, ich werde ein Hintergrundbild für meine Taste.

Okay? Ein Hintergrundbild, das wie ein abgerundeter rect ist. Also lassen Sie uns beiseite hier ein wenig nehmen und darüber reden: Wie können wir Bilder in unserer App bekommen? Okay. Wir wollen Bilder in unserer App zu verwenden; es ist sehr üblich, zu wollen, Bilder zu verwenden, in einer grafischen Anwendung wie auf einem Telefon.

So, wie Sie es tun? Und die Antwort ist, dass Sie gehen hier bis zu dieser Stelle genannt "Bild-Asset-Bibliothek" - images.xc Vermögenswerte oder Xcode Vermögenswerte. Und man kann sehen, dass es bereits ein paar von Slots für die Symbole hier.

Sie sind nicht festgelegt, aber dies ist das App-Symbol. Und auch Sie können ein Startbild haben, die sofort angezeigt wenn jemand startet Ihre Anwendung. Und dann, wie Sie initialisieren, hinter dem Start Bild mit, und dann wird es zeigen Ihnen aktuelle UI sind. Also es ist eine Art Schnellstartbild.

Und wir werden darüber am Montag sprechen. Wir werden die App Hintergrund für Machismo hier eingestellt. Aber ich werde tatsächlich in einem anderen Bild ziehen. Also habe ich ein paar Bilder hier. Und zum Beispiel, ich habe hier diese Stanford-Logo bekam. Also werde ich Stanford-Logo zu ziehen, dass

in, weil ich will, es zu benutzen. Und das ist es; Sie ziehen es einfach hier. Er sagt Stanford. Beachten Sie aber, dass es eine Art von hat diese seltsame Sache hier, um dieses 1X und 2X. Siehst du das?

Und das ist, weil jedes Bild, das Sie verwenden werden, um in iOS will eine normale Auflösung Version zu haben, die los ist verwendet werden, wie auf dem iPhone 4 - im Grunde nonretina angezeigt. Und dann ein 2X, doppelt so hohe Auflösung - eine, die auf Netzhaut verwendet wird. Und es wird automatisch die richtige auswählen,

je nachdem, was Sie laufen auf. Okay? Sie haben nichts dagegen tun. Aber Sie wollen diese höheren res diejenigen zur Verfügung zu stellen. Und diese höheren res diejenigen sind nicht nur unbedingt exakt das gleiche Bild, nur, wissen Sie, die mehr Hochauflösung. Sie ermöglicht Ihnen, zu tun -

zum Beispiel, hier habe ich ein Stanford-Logo bekam mit dem kleinen Baum. Sehen? Sehen Sie den Baum da drin? Vielleicht ist das zu niedrige Auflösung um wirklich einen gut aussehenden Baum zu bekommen. Aber ich kann den Baum in eine höhere Auflösung zu erhalten,

so dass ich es dort. Es ist also nicht so häufig, dass die beiden Elektroden wäre tatsächlich unterschiedlich aussehende, aber sie konnten sein. Sicherlich erlaubt sie sein könnten. Ich möchte auch wirklich nicht über diese zu nennen "Stanford". Ich werde dies als meine Backup-Karte zu verwenden.

Anstelle von, wissen Sie, irgendeine Art von Design, Ich werde das Stanford-Logo kann die Rückseite meiner Kreditkarte zu haben. Wenn meine Karte nach unten geklappt und ich sehe den Rücken, Ich werde das Standard-Logo zu sehen. Also werde ich diese zu nennen "Back-Karte." Ich kann es etwas nenne ich will.

Ich habe auch Dinge für die Front hier. Dieses hier richtig. Dies ist leere Karte mit einer abgerundeten Ecke. Da ist es. Sie können es nicht sehen. Da es sich um eine weiße Karte ist so dass Sie es nicht sehen.

Aber ich werde das zu verwenden. Ich werde diese zu nennen "Kartenfront." Und ich werde auch eine hochauflösende Version zu haben von das auch. Okay. Also das ist gut. Also so viel, wie wir es sehen können.

Okay. So, jetzt habe ich ein paar Bilder. Und nun möchte ich sie in meiner Ansicht zu verwenden. Ich möchte Art diese Karte zu setzen, diese zu verwenden. Also werde ich mit meiner Karte, hier zu sein Gesicht zu starten auf, wenn es läuft. Als meine App läuft, geht die Karte ins Gesicht zu starten.

In Ihrer Anwendung, wenn Sie sich Ihre Hausaufgaben sind Sie wahrscheinlich gehen zu wollen, um es zu starten Gesicht nach unten. Der Grund dafür ist meine App zeigt nur eine Karte: Ace of Clubs. So ist es in Ordnung, wenn es mit kreuzass kommt. Aber Sie wollen nicht Ihre Karte kreuzass sicher zu kommen.

Und es könnte ein wenig mehr Arbeit für Sie Codierung weisen zu initialisieren es mit etwas zufällige Karte zu kommen. Also werde ich es nur dem Gesicht nach unten kommen. Machen Sie es sich auf Sie sehr viel einfacher. Okay? Wie können wir also, dass festgelegt? Wirklich einfach.

Ich habe die Taste hier ausgewählt habe. Hier ist seine Eigenschaften. Eine seiner Eigenschaften ist die Hintergrundbild. Okay? Also ich werde einfach hier klicken und Sie können sehen, dass alle Bilder, die in meinem Vermögen Bibliothek sind, werden hier sein. Okay? Und wenn es ein wirklich viele von ihnen,

Sie können eingeben, und es wird es passen. So werde ich es die Kartenvorderseite sein zu lassen. So machte es die Kartenvorderseite, aber ich sehe nicht, - wo ist die abgerundete rect? Okay? Ich kann nicht die abgerundeten rect zu sehen. Und das ist, weil es zu klein ist

Die abgerundeten Ecken sehr gut hier zu sehen. So können Sie einfach diese Sache nehmen und es ändern. Okay? Und ich werde es machen - Ich will es etwa zwei bis drei [unverständlich] zu sein. Also werde ich es 64 von 96 zu machen. Ich weiß, dass dies geschieht, eine sehr gute Größe zu sein, und ich habe es der Größe verändert.

Und jetzt können Sie die kleinen abgerundeten Ecken zu sehen. Sehen Sie? So ist das, dass Bild, das ich gezogen mit Taste oben auf der es geschrieben. Und natürlich, zog ich es ein wenig, damit ich ihn wieder einsetzen können in der Mitte meiner blauen Richtlinien verwenden, nicht wahr? Und natürlich möchte ich nicht meine Karte zu sagen "Knopf" es;

Ich will das Kreuz Ass auf hier. Also werde ich einfach darauf doppelklicken. Ich könnte auch, dass bearbeiten hier oben. Sie sehen hier, wo es heißt "Knopf"? Klicken Sie hier. Ich werde einfach einen Doppelklick auf direkt auf sie.

Ich werde geben "As". Und wie kann ich Clubs geben, weiß jemand? Alt etwas oder andere. Ich mag diese Art und Weise zu tun. Ich gehe zum Menü, Sonderzeichen zu bearbeiten, erhalten diese magische Sache.

Sie jemals gesehen, eine Art cool? Doppelklicken Sie einfach auf - die Clubs und doppelklicken Sie darauf finden. Gut. So gibt es mein kreuzass. Nun aber, wissen Sie, das ist nicht ganz richtig, auch nicht. Ich weiß nicht wirklich, wie die blau A. ich schwarz sein wirklich das A wollen.

Und es könnte ein wenig größer sein. Es gibt mehr Platz für sie. So kann ich gehen hier über, zum Beispiel, und die Schriftart zu ändern. Ich kann es ändern, indem Sie dieses kleine Ding klicken, um es größer zu machen, oder ich kann tatsächlich auf diesem T klicken und sogar festlegen, welche Schriftart es ist. Eine Sache, die wirklich wichtig ist

in iOS 7 ist die Typografie. Okay? Auswahl der richtigen Textstile ist wirklich, wirklich wichtig in iOS 7. Und wir werden hier nicht wirklich darüber reden; wir werden nur die Systemschriftart zu verwenden. Aber das ist etwas, was wir über in der Vorlesung sprechen,

ist dafür, dass Sie die richtigen Schriften an den richtigen Stellen holen die UI sehen wirklich schön zu machen. Ich kann die Größe ändern, vielleicht 24 Punkt oder etwas ähnliches. Das wird noch passen. Und dann will ich nicht dieses Blau, das ist also dieser Text Farbe.

Also lassen Sie uns vorangehen und dass schwarz zu machen. Gut. Also habe ich die Karte schauen, wie ich will. Das ist gut. Alle diese Eigenschaften, die wir einstellen, nebenbei bemerkt, wenn Sie auf Taste suchen, können Sie diesen Zustand Config sehen hier?

Standard? Wir können tatsächlich alle diese Dinge anders eingestellt für den markierten Zustand der Schaltfläche, oder einen ausgewählten Zustand oder deaktivierten Zustand. Aber wir Einstellung diese als Standard. So sind alle unsere Tasten immer was los Anzeige der Standardzustand zu sein.

Okay? So Tasten sind ziemlich mächtig. Sie können sie anders aussehen müssen, wie sie hervorheben oder was auch immer, aber wir werden alle in zu arbeiten, was heißt das "Normal" oder "default" Zustand der Schaltfläche. Sie werden sehen, dass, wenn wir an den Code zu erhalten. So können wir tatsächlich dieses im Augenblick laufen.

So läuft. Sie haben alle - die meisten wieder Xcode getan. Sie wissen, wie man läuft. Es ist diese kleine Play-Taste. Sie können es tatsächlich halten Sie, und es gibt andere Dinge, die Sie wie Test durchführen und analysieren können.

Aber wir werden nur zu laufen. Also klicke ich laufen, und es wird dies in einem Simulator laufen. Okay? Und hier ist es. Und man kann sehen, dass die Simulators so groß, dauert es nicht einmal auf meinem Bildschirm passen. Also ich muss Art darin scrollen.

Und wenn ich es klicken, wird es nichts. Okay? Also das ist nicht gut. Gut. Weil ich keinen Code in meinem Controller setzen zu reagieren zu diesem Ding berührt zu werden. Also das ist, was wir als nächstes tun werden.

So gehen wir wieder hier und zu stoppen. Okay. Also, wie machen wir das? Nun, es ist ziemlich interessant, wie wir das tun, eigentlich. Ich werde hier etwas mehr Platz zu machen. Und was wir tun müssen, ist zu unserem Controller anschließen. Und wir tun, dass unser Controller Code auf dieser Seite, indem sie

an Seite mit unserer Sicht. Gut? Also werde ich hier diesen kleinen Knopf klicken, auf diese Schaltfläche, Symbol, und das bringt nebeneinander. Und standardmäßig, wenn Sie einen Blick hier oben auf der linken Seite, es wird dem Beherrscher dieser Code auf der rechten Seite zu setzen.

Und Sie können diese bewegen mehr Platz zu bekommen wenn Sie für den Code wollen. Sie können auch zwischen dem Header wechseln, wenn Sie wollen öffentlichen Sachen oder die Umsetzung zu tun. Okay? Also das ist gut. Nun rechts dieser Code hier ist ein Teil

der View-Controller-Lebenszyklus, die wir gehen etwa in zwei oder drei Wochen zu sprechen. Aber heute werden wir nicht darüber reden. So können wir einfach loswerden. Und lassen Sie uns beginnen gerade mit den Worten: "Wenn diese Taste berührt wird, wir wollen, um es umzudrehen. "

Also müssen wir eine Verbindung herstellen zwischen unserer Sicht und der Steuerung. Und wir werden das Ding zu tun, wo wir das Ziel hängen und den Pfeil zu schießen. Okay? Genannt "Zielaktion." Und das wird Art von whacky zu sein.

Du bist wahrscheinlich nicht einmal diese gehen zu glauben, wenn man es sehen. Die Art und Weise, dies zu tun ist, dass Sie die Strg-Taste gedrückt halten. Also ich halte die Strg-Taste gedrückt, und ich bin Ziehen einer Linie aus der Sicht direkt in unseren Code. Gut? Okay? Und ich loslassen.

Und er sagt: "Oh, Sie eine Verbindung zwischen Ihrer Ansicht nach wollen und der Controller, nicht wahr? Hier ist, was ich wissen muss. " Es ist also zu fragen uns: "Was du willst du diese Verbindung zu nennen? " Also das wird der Name der Methode.

Es wird tatsächlich eine Methode, die hier zu schaffen, die aufgerufen wird, wenn wird die Taste berührt. Ich werde es nennen "Karte-Taste berühren." Das ist ein guter Name. Hier ist es zu sagen: "Was Sie wollen Sie den Typ des Arguments zu sein? "

Wir werden später darüber reden, aber jetzt wollen wir natürlich das Argument der Knopf sein dass sendet uns diese Aktion, okay? Welche wird schön sein, denn dann sind wir gehen zu sprechen, um es zurück und sagen, dass es sich umdrehen. Es gibt andere Dinge, die wir hier einstellen mag:

Welche Art von Veranstaltung wollen Sie diese Aktion zu senden? Und man kann es tatsächlich so eingestellt, dass es kein Argument ist, sendet er nur ohne Argumente Notenkarte Taste. Aber hier wollen wir es das Argument des Absenders zu haben, die Taste Absenden der Nachricht. Sie können auch entlang des Touch-Ereignis senden,

aber wir fast nie tun - ein Zehntel Prozent der Zeit. So, hier werde ich den Absender zu haben. Also, wenn ich eine Verbindung klicken, erstellt es eine neue Methode. Und das Verfahren ist nicht auf diese Schaltfläche verdrahtet. In der Tat sieht man diesen kleinen runden Kreis? Wenn ich die Maus über sie, zeigt es Ihnen, das ist, was es ist

angeschlossen. Okay? Also das ist nur ein paar ziemlich normal aussehende Methode genau hier. Der Rückgabetyp, IB Aktion, das ist eigentlich typedef Leere. Diese Methode tatsächlich void zurückgibt. Der Grund, dass Xcode stellt IB Aktion gibt

und IB Aktion des typedef für ungültig zu erklären, es ist nur so, dass es sagen kann, die Methoden sind Zielaktion so dass es Sachen wie diese tun. Okay? Die Maus über. Aber der Compiler ignoriert es. Der Compiler sieht es als nichtig, weil es typedef für ungültig zu erklären.

Es ist eine rein Xcode Sache zu dieser IB Aktion Sache. Und dann können Sie sehen, diese Methode ein Argument hat, Das ist der Absender. Das ist die Schaltfläche uns diese Nachricht zu senden. Und es wird diese Nachricht eine Touch geht jedes Mal zu senden up in der Schaltfläche.

Tippen Sie oben innen, nicht wahr? Das war der Fall. Also das ist, wenn es geht um diese Nachricht zu senden. Das ist also perfekt. Das ist, was wir wollen. Also jedes Mal, das passiert, was wollen wir tun?

Nun, wir wollen die Karte umdrehen. Okay. Also lassen Sie uns beginnen, indem es einfach über nach hinten Spiegeln. Und die Art, wie wir das tun werden, ist, wir gehen eine lokale Variable mit dem Namen zu erstellen "Kartenbild." Okay. Und Sie bemerkte es versuchte, mich dort zu helfen, geben, und du wirst eine Menge helfen, hier zu sehen.

Und UI Bild ist eine andere Klasse in iOS, okay, wie UI-Taste ist eine Klasse. UI Bild ist die Klasse, wie Sie sich vorstellen können, ein Bild speichert. Könnte ein JPEG-Bild, könnte ein animiertes GIF sein, es könnte ein TIFF-Bild, was auch immer. Okay? So ist es sehr leistungsfähige Bildhalte Klasse.

Und es hat eine Klassenmethode namens "Bild mit dem Namen" und Sie geben ihm eine Zeichenfolge wie Kartenvorderseite oder die Karte zurück, nicht wahr? Und es wird in der Aktiv Bibliothek schauen und ein Bild geben von der richtigen Auflösung, je nachdem, ob es geht werden weitergehen - tatsächlich, es wird Ihnen ein Bild geben mit beiden Auflösungen.

Und dann, je nachdem, wo Sie es angezeigt, es wird, wissen Sie, Wählen Sie die richtige Auflösung, sei es auf einer Netzhaut oder nicht. Also das ist cool. Wir haben das Bild. So, jetzt sind wir gerade dabei die Taste sagen, dass dies zu setzen als Hintergrundbild, anstatt was auch immer auf ihm jetzt.

Also auf den Knopf zu sprechen, tun wir eckige Klammer Absender öffnen. Recht? Sie sehen, dass der Sender die Taste ist uns Senden diese Nachricht. Okay? Set. Okay, ich werde Set Hintergrund beginnen die Eingabe. Und Sie sehen, wie ich mit der Eingabe beginnen, Xcode ist darauf hindeutet,

zu mir, was könnte ich will. Nun, er weiß, dass der Sender ein UI-Taste ist, so ist es vermutlich nur Taste Methoden hier, die beginnen mit Set B - Set Hintergrundfarbe, Set Hintergrundbild und setzen Grenzen. Okay? Beachten Sie ich auch etwas Hilfe auf dem Boden zu bekommen.

Sehen Sie, ist das nicht cool? Ein wenig ein oder zwei Zeilen von Hilfe? Und ich konnte auf diesen Link klicken und es würde mich in der Dokumentation übernehmen. Wir gehen nicht, dass die Gründe für die Zeit zu tun. Aber ich kann auch nur ein Klick und es aufnimmt, dass ein

und sofort wählt das erste Argument. So kann ich das nehmen. Okay? Also werde ich das tun. Kartenbild. Und hier bemerken, wenn ich CA geben, gibt es eine Menge Dinge, dass Start mit CA, die dort gehen könnte.

Aber Xcode ist ziemlich smart. Sie weiß, dass eine lokale Variable viel wahrscheinlicher ist, was Sie hier als alle diese anderen CA wollen - Funktionen, die mit CA starten So ist es wählt automatisch das für mich. Und wenn ich getroffen Reiter, nebenbei bemerkt,

es geht im Grunde komplett es zu entkommen. [Unhörbar] Und wenn ich ein anderes Register getroffen, geht es hier. Dieses kleine vier Zustand, was genau das, was ich sprach darüber, wo Sie diese für den markierten Zustand gesetzt, oder der ausgewählte Zustand oder deaktivierten Zustand. Wir werden nur die normal zu tun

oder Status dieser Schaltfläche Standard. Okay? So wir die Einstellung der Hintergrundbild für diese Schaltfläche. Und wir müssen auch den Titel zu setzen, weil wir nicht wollen, dass kreuzass, um zu sehen, wenn wir sie über nach hinten kippen. Also werde ich es einfach auf, dass.

Okay. Das ist die leere Zeichenkette. Ich könnte auch sagen, es null. Okay. Aber ich sage leere Zeichenkette nur zu sehen, was wie leere Zeichenkette aussieht. Also eigentlich, wenn wir dies laufen, Befehl drei. Okay, lassen wir das versuchen.

Oh cool. Also [unverständlich] Sie da. So gibt es eine Miniatur-Version davon. Okay. Also hier ist unsere Karte. Und wenn ich darauf klicke, oh yeah, sie dreht sich um. Ja. Stanford-Logo mit dem Baum. Aber jetzt, wenn ich auf, tut es nichts anderes;

sie dreht sich immer auf die Rücken, das ist genau das, was unser Code tut, nicht wahr? Also das ist gut. Also lassen Sie uns es zu beheben, so dass es in beide Richtungen dreht. Okay? Und ich werde das tun, indem Sie das sagen, wenn - tatsächlich, ich werde zuerst eine andere Sache zu tun

diesen Code zu machen, ein wenig einfacher ist stattdessen von dieser lokalen Variablen hat, kann ich nur diese und Pop es richtig drin. Okay? Und das ist sehr üblich, dass zu tun. Und wenn ich wollte, dass es zu wickeln, wird es automatisch wickeln wenn ich diese zu kurz.

Aber ich kann auch eine Rückkehr in dort setzen. Und wenn ich das tue, schauen, was es mit den Doppelpunkte tut. Sehen Sie, wie es Linien die Doppelpunkte up? Es wird immer das tun. Wenn Sie die Taste Rückkehr in der Mitte eine Nachricht senden dass mehrere Argumente hat, wird es die Doppelpunkte Linie

up für alle Argumente. Wirklich cool. So können Sie alle Argumente siehe links und rechts aufgereiht. Wie auch immer, ich werde, wenn der aktuelle Titel, um zu prüfen - Okay, das ist ein Button-Methode - wenn es sich um eine Zeichenfolge ist. Wenn diese Länge ist, okay, ungleich Null, okay -

so dass das, Testen gibt, wenn die Länge von Null verschiedene zu sehen - das ist eine coole Art, es zu tun, weil das funktionieren wird wenn Sie die Taste Titel Null ist oder es ist, wenn die leere Zeichenkette. Da die Schaltfläche Titel beginnt gleich Null. Wenn Sie nicht setzen, es zu etwas, beginnt es aus gleich Null. Also hier mit einer Zeile Code habe ich überprüft sowohl die ursprüngliche

Zustand möglicherweise - nicht in unserem Fall, weil wir setzen den Titel zum Ein Club - aber es könnte in Ihrem Fall sein. Dann werden wir es auf eine Sache festgelegt, wir werden sonst auf die andere Sache eingestellt. So wollten wir nur dies auf diese. Gut?

Also, wenn es ein Titel auf die Schaltfläche, mit anderen Worten hat es das Kreuz Ass, dann sind wir gehen nach hinten zu wechseln. Und wenn es kein Titel auf den Button, dann werden wir nach vorne zu wechseln. Okay? Ace of Clubs.

Okay? So, jetzt, wenn wir laufen, wird unsere Karte in beide Richtungen drehen. Okay? Also wirklich einfache Sachen zu verdrahten in Ihrem Controller zu tun, was Sie wollen. Das nächste, was wir gehen zu tun ist, in der - okay, ich werde Ihnen zeigen, hier wirklich schnell. Wenn Sie bei gedrückter Wahltaste, ein sehr wichtiger Schlüssel,

sehen Sie, wie es ein Fragezeichen setzt und beginnt Hervorhebung Dinge? Das wird erlauben Ihnen den Übergang in die Dokumentation. Also, wenn ich will mehr über diesen aktuellen Titel zu wissen, wenn ich Option getroffen, klicken Sie darauf -

zu sehen, die ich hier richtig, ein wenig Hilfe bekommen. Es ist eine Eigenschaft. Es ist schreibgeschützt, es ist nonatomic. By the way, wenn Sie "beibehalten" in der Dokumentation zu sehen, das ist das gleiche wie "stark". Okay? Bewahren Sie ist die gleiche wie stark im Grunde.

Ein wenig der Beschreibung hier aber auch Hyperlinks. Und wenn ich auf einer dieser Hyperlinks klicken, wie dieser, es nimmt mich in die Dokumentation. Dies ist ein separates Fenster hier. Und Sie können in dieser Dokumentation navigieren. Sie wollen wirklich mit all diesen vertraut zu machen.

Ich kann es nicht zeigen wirklich alle für Sie heute für Zeitdruck, aber Sie können Dinge wie Suche, wie kann ich gehen UI-Taste finden Sie hier. Okay. Es gibt UI-Taste. Ich könnte nach unten scrollen und zu gehen, zum Beispiel, Set Hintergrundbild oder Set Hintergrundbild

für den Zustand, den wir gerade gesehen haben. Vielleicht werde ich auf UI-Bild zu gehen. Sie sehen alles. Es ist schön, Beschreibungen der Klasse am Anfang und dann alle Methoden, etc., etc. Also auf jeden Fall wollen ein Meister dieser Dokumentation zu werden.

Sie können auch Option Doppelklick auf die Dinge und es wird Ihnen direkt in die Dokumentation zu senden. Wenn Sie nicht möchten, dass zuerst die kleine Hilfe, eins zu bekommen, Sie können direkt in gehen. So Option ist der Schlüssel ein dafür. Fahren wir fort - in Ordnung.

hier Beachten Sie, dass dieser kleine Raum entlang der Unterseite erschienen wenn wir die Anwendung lief - sehen Sie das? Dies ist der Debugger auf der linken Seite, und dies ist die Konsole auf der rechten Seite. Okay? Und Sie werden auf jeden Fall den Debugger zu verwenden und die Konsole sowohl in dieser Klasse.

Und eigentlich könnte ich habe Zeit, um schnell zu tun - zeigen Ihnen, wie Sie die Konsole zu tun. Aber wie auch immer, können Sie es ausblenden, indem Sie es nach unten ziehen oder auch durch dieses Ding durch Klicken auf [unverständlich]. Gut. Also das nächste, was wir tun werden, ist, wir gehen

ein kleines Etikett auf unsere UI zu setzen, die die Flips zählt. Okay? Ein wenig inkrementelle Sache dass erhöht jedes Mal gibt es eine Flip. Und wir tun, um hier durch geht zurück und packte uns ein Etikett. So ein Etikett ist ein Nur-Lese-Stück Text, editierbaren Text.

Und ich werde es gerade hier zu ziehen über und legte sie in der unteren linken. Ich werde darauf doppelklicken, um es zu nennen "Flips Doppelpunkt Null." Dies ist, was ich will es so aussehen, als meine UI zuerst startet. Jetzt ist hier, ich werde nie darauf zu tippen und verursacht eine Meldung wie die Schaltfläche gesendet werden;

es ist umgekehrt. Mein Controller will dies und sagen, es zu sprechen wenn die Flips ändert sich die ganze Zeit. Okay? So könnte man denken, dass Sie von Ihrem Code ziehen würde unten zu diesem Flips, aber Sie nicht tun, leider. Sie halten immer noch die Kontrolle und ziehen Sie nach unten von hier.

Aber anstatt sie zu nach unten ziehen in Ihre Implementierungsbereich, Sie ziehen es in den Bereich Interface, weil du gehst eine Eigenschaft zu erstellen, die verbindet im Grunde auf diesem Label. So wir das tun. Wir bekommen eine Sache hier.

Es fragt uns ein wenig anders Fragen: "Was ist der Name dieser Eigenschaft?" Ich werde es nennen "Flips-Label." Okay? Beachten Sie, dass diese Eigenschaft schwach ist. Okay? Wenn ich eine Verbindung klicken, es geht um eine Eigenschaft machen hier und es wird schwach.

Dies ist das erste Mal, dass wir schwach haben im Vergleich zu stark gesehen. Der Grund dafür ist schwach da dieses Label stark durch die Ansicht selbst gehalten wird. Also brauchen wir keinen starken Zeiger darauf zu haben, zu halten, in der Halde. Die Ansicht wird.

Und wenn dieses Label immer den Blick verlässt, Es wird noch aus dem Heap gereinigt. Und diese Eigenschaft - diese Zeiger darauf - wird auf Null gesetzt bekommen, was genau das ist, was wir wollen. Denn wenn das klappt Etikett nicht in Sicht ist, wollen wir nicht, ohne Aktualisierung und Senden von Nachrichten an, es zu sein.

So ist es eine große Verwendung von schwachen hier richtig. Das ist normal Eigenschaft, die Sie gewohnt sind auszunehmen vielleicht für dieses IB Steckdose. Das ist genau wie IB Aktion. Es ist eine sinnlose Sache der Compiler ignoriert dass Xcode verwendet.

Okay? Damit es das tun kann - zeigen Sie, was es angeschlossen ist zu, wenn Sie die Maus über sie. Okay? By the way, können Sie alle Verbindungen zu sehen indem auch der rechten Maustaste auf die Dinge. Also hier bin einfach auf den Button rechts geklickt und Sie können seine Verbindungen zu sehen.

Wenn Sie schon einmal umbenennen möchten - wie wenn ich nicht berühren Karte Knopf mögen, ich will es umbenennen leider etwas können Sie nicht umbenennen einfach. Sie müssen hier zu gehen, der rechten Maustaste, Verwenden Sie diese kleine Sache, die es zu trennen, und steuern dann ziehen wieder.

Okay? Jeder hat das? Es ist bedauerlich. Es wäre wirklich schön, wenn Xcode konnte verfolgen dass für Sie, aber es kann nicht. Also, wenn Sie jemals etwas umbenennen möchten, Sie müssen sie trennen sich hier mit der rechten Maustaste darauf,

und ziehen Sie dann eine neue Steuerung und den Namen, der Art und Weise eingestellt. Sie können auch auf diesem kleinen Kerl einen Rechtsklick und es zeigt Ihnen alle Anschlüsse für die Steuerung. Stellt dieses Fenster. Und ich kann das Etikett zu sehen. Sehen Sie? Ich bin mousing über den Button.

Etikette. Es gibt auch diese kleine Eigenschaft hier, Das ist etwas, was Sie nicht gesehen haben, das ist im Grunde eine Eigenschaft, die Punkte auf die gesamte Ansicht von Ihrem Controller. Das ist also die Verbindungen zu den Controllern. Siehe, heißt es "Kartenspiel-View-Controller"?

Okay? Das ist also der rechten Maustaste. Ich bin der rechten Maustaste hier vorbei. Gut. So wie werden wir diese Flips Label Arbeit zu machen? Wir werden es für eine Sekunde beiseite zu legen. Lassen Sie uns nicht darüber nachdenken.

Lassen Sie uns stattdessen eine andere Eigenschaft zu tun. Eigentum. Welches ist nonatomic, das ist nur los ein int zu sein, was ich werde zu nennen "Flip zählen." Okay? So Flip Zählung ist nur eine ganze Zahl, die los ist die Anzahl der Flips zu halten. Und diese Uhr.

Einige mehr Platz hier. Geh dorthin. Ich werde einfach hier unten gehen und sagen self.flip Zählung plus plus. Okay? Nun ruft, dass die Setter oder der Getter für Flip zählen? Beide. Genau.

Das ruft sowohl die Setter und Getter. Es ruft die Getter die Flip Zahl zu bekommen, es ist dann zuzüglich plussing es; und dann ruft die Setter setzen ihn zurück. Okay. So ist diese Art von einem funky Auskleidung von Code recht. Das ist das Gleiche wie die Aussage self.flip Zähler gleich self.flip

zählen plus eins. So ist es den Aufruf der Getter und Setter. Okay. So, jetzt haben wir diese schöne Flip Zahl bekam. Es ist die Verfolgung der Zählung; Wie Haken wir, dass bis auf diese Sache hier? Was ich werde ein wenig größer, nebenbei zu machen.

Okay. Wie wir, dass Haken, so dass sagt kippt Doppelpunkt ein, Flips Kolon zwei, Flips Kolon drei? Nun, wir werden es tun, um die Setter für die Flip-count. Okay? Also normalerweise ein Setter für die Flip-Zählung würde wie folgt aussehen. Okay? Und hier ist ein weiterer großer Einsatz von Getter und Setter, das ist UI synchron mit einer Eigenschaft zu halten.

Und ich werde tun dies nur durch self.flips Etikett zu sagen - Flips Label.text gleich - oops, sorry. Es ist schwer, im Stehen zu geben. Equals NS string, string mit dem Format, welche Sie bisher gesehen haben, Flips Kolon Prozent D self.flip zählen. Okay? So, jetzt wird jedes Mal Flip Zahl verändert werden wir

die Benutzeroberfläche zu aktualisieren. Sinn ergeben? Haben Sie Fragen dazu? Okay. Also lassen Sie uns laufen. Okay. Hier ist unsere Sache. So klicken, dreht sich um, Flip-Zählung Updates.

Flip, Flip, Flip, Flip. Hin und her zu arbeiten, und die Flip-Zählung wird die Verfolgung wie viele Flips wir tun. Okay? So können Sie das Zeug zu sehen ist wirklich einfach bis zu verdrahten. Okay? Und, wissen Sie, wenn Sie bekommen in Gebäude auch komplizierte Anwendungen,

denn du wirst immer die gleichen Mechanismen verwenden mit Zielaktion und Steckdosen und du gehst unter Verwendung von Getter und Setter zu sein, die Dinge synchron zu halten, es wird einfach für Menschen zu sein, zu verstehen, wie Ihr Code funktioniert. Sie wissen, wo sie suchen müssen, um zu sehen, wo UI Aktualisierung geschieht,

usw. Ich werde hier noch eine Sache zu tun. Nehmen Sie eine Minute und zeigen Sie sich NS. Okay. Ich habe dir gesagt, dass du etwas in der Konsole anmelden könnte. Also lassen Sie uns diese Sache ändert sich jedes Mal tun, Lassen Sie uns einen NS-Protokoll zu tun. So ist es nur eine C-Funktion.

Und Sie geben ihm eine Format-String wie printf. Also werde ich sagen Flip Zähler gleich Prozent V self.flip Zahl. Okay? So setzen Sie nur, dass NS-Log in dort, und jetzt, wenn wir laufen Sie gehen es in der Konsole zu sehen. Es geht nach oben zu kommen, wenn ich auf, und es wird zu sagen, was hier passiert ist.

By the way, natürlich, das kann ich weiter machen. Und an den Simulator zurückgehen. Mal schauen. Okay. So NS-Protokollierung - ehrfürchtige Weise zu debuggen. Okay? Manchmal viel einfacher, als einen Haltepunkt einstellen und dann, wenn Sie bekommen dort suchen

an den Variablen und so. Er druckt gerade heraus, was los ist und man kann es sehen. Vor allem in der UI Dinge sind manchmal animiert, sie geschieht im Laufe der Zeit. Es ist manchmal schwierig, einen Haltepunkt in der Mitte zu setzen einer Animation zu sehen, was los ist.

Aber wenn Sie einige NS-Protokolle zu tun, können Sie Art von sehen, wie es läuft. Gut. Das letzte, was ich Ihnen hier zeigen, wie eine neue Klasse zu Ihrer Anwendung hinzufügen weil Sie, dass zu müssen tun werden.

Sie werden vier Klassen zu dieser hinzuzufügen. Okay? Sie gehen damit zu beginnen, okay, und dann wirst du vier Klassen hinzuzufügen - Karte, Deck, etc. Und die Art, wie Sie eine Klasse hinzufügen, ist, dass Sie - und in der Tat, die Art und Weise fügen Sie eine beliebige Datei zu Ihrem Projekt - , Neue Datei, die Sie in die Datei-Menü.

Okay? Und es gibt alle verschiedenen Arten Dinge können Sie hier, Datenbank-Datei hinzufügen, Schemadateien und alles. Aber Sie wollen diese eine linke obere Objective-C-Klasse. Okay? Hier wirst du nur den Namen der Klasse zu geben. So zum Beispiel, wenn ich werde Karte hinzufügen

und der Name der übergeordneten Klasse. Okay. Wenn Sie Spielkarte tun, können Sie Karte hier eingeben. Es muss nicht etwas sein, das aus dieser Liste ausgewählt ist, Okay, das sind die iOS diejenigen. So, hier werde ich auf die Karte zu machen. Ich konnte hier setzen Karte.

Es ist zu fragen, wo diese zu speichern. Ich konnte es richtig an der gleichen Stelle setzen dass meine Karte Game-Controller ist, sehen Sie? Aber ich bin eigentlich ein großer Fan Ihres Modells in einem eigenen Verzeichnis setzen. Also würde man hier unten neuen Ordner verwenden.

Lassen Sie uns wie ein Model Verzeichnis zu erstellen, und das schafft ein Modell Verzeichnis hier. Es gibt einen Controller, hier ist das Modell Verzeichnis. Und so erstellen. So geht das ist zu schaffen Karte Punkt H und M. Hier Karte Punkt H und M, okay, Art der leere Versionen von ihnen.

Sie können hier zwischen ihnen hin und her wechseln. Beachten Sie, dass, wenn ich den linken Schalter, die richtigen Veränderungen anzupassen. Sehen Sie? Ändern Sie dies, dies entspricht. Das ist, weil ich habe Kollegen hier gewählt. Wenn Sie in den Hand gehen und diese Datei auswählen manuell,

dann wird es nicht mehr, dass die Magie tun. Aber man kann immer zu Kollegen gehen zurück und es wird sie synchron zu halten. Okay. So können Sie haben - einige Leute wie ihre Header-Datei auf der linken Seite, rechts einige auf, was auch immer. Beachten Sie auch, hier über es wäre schön,

wenn ich kann auch Gruppe diese Dinge im Navigator. Und ich kann sie ausgewählt rechten Maustaste auf eine neue Gruppe, indem er. Sagen Modell. Genau hier. Und nun mein Modell Ich habe hier in seiner eigenen kleinen Stelle zu setzen. Ich kann sogar diese bewegen, setzen Sie es hier unten, was auch immer.

Ich konnte meine alle vier Klassen in dort setzen. Es ist möglich, diese Gruppe in das Dateisystem zu verbinden. In der Tat finden Sie, wenn Sie nur auf eine Datei und den Inspektor bringen auf sie hier, können Sie sehen, dass es diesen Ort bekam ist wo Sie können angeben, ob es sich um einen absoluten Pfad ist, oder relevant für die Gruppe ist es in, oder was auch immer.

So können Sie die Kontrolle zu bringen. Und das ist es. Also ich denke, das ist alles, was Sie benötigen, um Ihre Hausaufgaben machen. Du wirst nur hier, um alle Ihre Code eingeben für die Karte und Ihre drei andere, die hinzuzufügen. Geben Sie alle, dass Code in.

Und dann alles, was Sie haben zu tun ist, diese Karte zu machen, statt zeigen kreuzass die ganze Zeit, muss durch das Deck zu gehen, okay? Es gibt eine detaillierte Hausaufgaben aufzuschreiben geschrieben. Er hat alle Arten von Hinweisen und Hilfe, und sagt Ihnen, über das, was die erforderlichen Aufgaben sind,

und Bewertungskriterien, und all das Zeug. So lesen Sie auf jeden Fall, dass die Sache im Detail, okay? Sie nicht, dass Sachen springen und versuchen, nur gerade zu gehen, um es zu tun. Und wenn Sie Fragen haben, werde ich hier sein. Das ist es. >> Für weitere Informationen, wenden Sie sich bitte mit uns in Stanford.edu besuchen.



Video Description

This is the second lecture of the course as it was published by Stanford University. It has Creative Commons rights.