1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar] [iOS: Het schrijven van applicaties zoals een Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Dit is CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Oke, iedereen, welkom op iOS: Het schrijven van applicaties zoals een Boss. 5 00:00:12,000 --> 00:00:16,000 Dit seminar zal zich richten op het schrijven van apps voor de iPhone 6 00:00:16,000 --> 00:00:19,000 en op zijn beurt het schrijven van apps voor de iPad, en dus we eigenlijk gaan lopen door 7 00:00:19,000 --> 00:00:23,000 een paar verschillende voorbeelden van hoe je een app te maken, een eenvoudig spel als Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 of als je meer geïnteresseerd in het maken van een app als een soort nieuwslezer 9 00:00:26,000 --> 00:00:30,000 of iets dat interageert met het internet zal ik praten over dat ook. 10 00:00:30,000 --> 00:00:32,000 Hier is onze korte agenda. 11 00:00:32,000 --> 00:00:36,000 >> IOS apps zijn geschreven in een taal genaamd Objective-C, 12 00:00:36,000 --> 00:00:39,000 en dit is wat vergelijkbaar C maar niet echt helemaal, 13 00:00:39,000 --> 00:00:41,000 dus we zullen praten een beetje over de taal zelf 14 00:00:41,000 --> 00:00:45,000 en vervolgens hoe de iPhone apps met behulp van deze app programma genaamd XCode te bouwen, 15 00:00:45,000 --> 00:00:48,000 die als je nog niet gedownload het nog te voelen vrij om het downloaden te beginnen. 16 00:00:48,000 --> 00:00:50,000 Het is meerdere gigabytes. 17 00:00:50,000 --> 00:00:54,000 Het moet vrij zijn in de App Store, zodat je nodig hebt om een ​​Mac hebt 18 00:00:54,000 --> 00:00:57,000 idealiter de nieuwste versie van OS X. 19 00:00:57,000 --> 00:00:59,000 Als je niet, geen probleem. 20 00:00:59,000 --> 00:01:02,000 We hebben Macs in het science center tot uw beschikking 21 00:01:02,000 --> 00:01:05,000 met XCode geïnstalleerd, en dus voel je vrij om deze te gebruiken voor ontwikkeling. 22 00:01:05,000 --> 00:01:07,000 Als u wilt een app te maken, maar niet beschikt over een Mac, maak je geen zorgen. 23 00:01:07,000 --> 00:01:09,000 Er is genoeg campus middelen voor dat. 24 00:01:09,000 --> 00:01:15,000 En dus dan gaan we 2 grotere voorbeelden van verschillende apps die u kunt maken te dekken. 25 00:01:15,000 --> 00:01:19,000 Objective-C is technisch wat heet een super set van C. 26 00:01:19,000 --> 00:01:24,000 Dat betekent dat elke C-code ook geldig is Objective-C code. 27 00:01:24,000 --> 00:01:29,000 Dat betekent dat we soort van kanaal geplakt op een aantal extra functies aan C. 28 00:01:29,000 --> 00:01:33,000 Sommige van deze functies zijn niet te hoeven nooit meer schrijven malloc, God zij dank, 29 00:01:33,000 --> 00:01:36,000 geen zorgen te hoeven maken over die stomme pointers en te bevrijden en al dat spul 30 00:01:36,000 --> 00:01:40,000 je haatte over C, en het is een soort van verdwenen in Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Nu, Objective-C heeft ook een veel grotere standaard bibliotheek, 32 00:01:43,000 --> 00:01:47,000 dus er is veel meer functionaliteit die je gratis krijgt binnenkant van Objective-C. 33 00:01:47,000 --> 00:01:50,000 Weet je nog dat we het schrijven van PHP hebben we gemerkt dat we gingen van 34 00:01:50,000 --> 00:01:54,000 deze kleinste taal om de reusachtige bibliotheek van al deze gekke dingen die je kunt doen. 35 00:01:54,000 --> 00:01:56,000 Hetzelfde gebeurt in iOS. 36 00:01:56,000 --> 00:01:59,000 Er is objecten voor dingen zoals de boeddhistische kalender, en echt iets 37 00:01:59,000 --> 00:02:05,000 kun je eventueel denken aan waarschijnlijk bestaat reeds in de uitvoering Objective-C's. 38 00:02:05,000 --> 00:02:08,000 Het doel deel van Objective-C is verwijzing naar iets 39 00:02:08,000 --> 00:02:11,000 genaamd Object-Oriented Programming. 40 00:02:11,000 --> 00:02:14,000 Dit is een soort van een nieuw concept, maar we hebben eigenlijk vooral geleerd 41 00:02:14,000 --> 00:02:17,000 veel van deze concepten reeds. 42 00:02:17,000 --> 00:02:19,000 Het idee achter Object-Oriented Programming is dat je gaat structureren 43 00:02:19,000 --> 00:02:23,000 veel van uw code rond deze dingen genoemd klassen, 44 00:02:23,000 --> 00:02:26,000 en deze klassen zijn erg verheerlijkt structs. 45 00:02:26,000 --> 00:02:30,000 Binnenkant van een struct we eigenlijk zei hier is een ding, 46 00:02:30,000 --> 00:02:32,000 en dit ding kan hebben leden. 47 00:02:32,000 --> 00:02:35,000 Zo zou een knooppunt in een gekoppelde lijst andere dingen 48 00:02:35,000 --> 00:02:38,000 als een waarde, een pointer naar het volgende knooppunt in de lijst, 49 00:02:38,000 --> 00:02:44,000 en samen die wijzer en die waarde dit ene geval van een struct samengesteld. 50 00:02:44,000 --> 00:02:47,000 De lessen zijn zeer vergelijkbaar, behalve 51 00:02:47,000 --> 00:02:50,000 klassen kunnen ook functies in hen. 52 00:02:50,000 --> 00:02:54,000 Wanneer we een struct verklaard, kunnen we alleen maar zeggen int n of knooppunt * volgende. 53 00:02:54,000 --> 00:02:57,000 >> Nu met Objective-C kunnen we daadwerkelijk in functies 54 00:02:57,000 --> 00:02:59,000 binnenkant van die dingen. 55 00:02:59,000 --> 00:03:03,000 Een ander ding dat klassen kan doen is dat ze kunnen erven gegevens van andere klassen. 56 00:03:03,000 --> 00:03:07,000 Bijvoorbeeld, zullen we kijken naar een stel ingebouwde Objective-C klassen. 57 00:03:07,000 --> 00:03:11,000 Een van hen zou de klasse die de weergave voor een scherm staat te zijn, 58 00:03:11,000 --> 00:03:14,000 en dus door te zeggen Ik wil mijn eigen mening te implementeren 59 00:03:14,000 --> 00:03:18,000 we eigenlijk zeggen dat iemand bij Apple, waarschijnlijk echt aardige mensen, 60 00:03:18,000 --> 00:03:21,000 schreef deze klasse voor mij, en het behandelt zaken zoals het weergeven van knoppen 61 00:03:21,000 --> 00:03:25,000 of waardoor het scherm, en we zouden echt gepijnigd 62 00:03:25,000 --> 00:03:28,000 naar alles, wat de functionaliteit zelf implementeren, en ga zo maar door simpelweg 63 00:03:28,000 --> 00:03:31,000 erven gegevens kunnen we zeggen alles wat je deed in die klasse 64 00:03:31,000 --> 00:03:34,000 Ik wil ook de binnenkant van mijn klas, en dan ga ik naar een aantal andere dingen te doen, 65 00:03:34,000 --> 00:03:37,000 namelijk implementeren van een app. 66 00:03:37,000 --> 00:03:40,000 Dat is wat dat woord betekent erfenis. We zien een meer concreet voorbeeld. 67 00:03:40,000 --> 00:03:42,000 >> En tot slot, de sleutel met Object-Oriented Programming is dat 68 00:03:42,000 --> 00:03:45,000 leidt tot data inkapseling. 69 00:03:45,000 --> 00:03:48,000 In sommige van ons probleem stelt dat we zouden kunnen hebben deze grote, globale variabelen 70 00:03:48,000 --> 00:03:51,000 en globals overal, en dat is hoe we zouden bijhouden van de staat. 71 00:03:51,000 --> 00:03:55,000 Met lessen kunnen we beginnen met het inkapselen van informatie binnenkant van een object. 72 00:03:55,000 --> 00:03:58,000 Als we een scherm op onze app, hebben we niet echt nodig om alle gegevens van zijn 73 00:03:58,000 --> 00:04:01,000 een ander scherm in onze app binnenkant van die, 74 00:04:01,000 --> 00:04:04,000 en zo door het inkapselen van dingen binnen klassen leidt dit eigenlijk 75 00:04:04,000 --> 00:04:08,000 veel beter code design, en dit is mogelijk met enkele extra functies 76 00:04:08,000 --> 00:04:11,000 van Objective-C. 77 00:04:11,000 --> 00:04:15,000 Waarschuwen, de syntaxis voor Objective-C is bananen. 78 00:04:15,000 --> 00:04:19,000 Het is alsof er niets we al eerder gezien, 79 00:04:19,000 --> 00:04:22,000 dus het is een beetje een leercurve wennen 80 00:04:22,000 --> 00:04:24,000 wat de heck betekent dit? 81 00:04:24,000 --> 00:04:27,000 Maar als je eenmaal voorbij dat de eerste leercurve het is echt, echt glad 82 00:04:27,000 --> 00:04:29,000 om te beginnen met het schrijven van apps. 83 00:04:29,000 --> 00:04:33,000 >> Om een ​​klasse te verklaren, te zeggen is mijn klas, het bestaat, 84 00:04:33,000 --> 00:04:35,000 en misschien hier zijn enkele dingen die ik ga later te definiëren, 85 00:04:35,000 --> 00:04:38,000 Ik ga @-interface zeggen. 86 00:04:38,000 --> 00:04:41,000 Ik ga @-interface zeggen. Ik ga mijn klas een naam te geven. 87 00:04:41,000 --> 00:04:43,000 En dan later ergens anders ga ik @ end zeggen, 88 00:04:43,000 --> 00:04:46,000 en alles wat daar tussen de @-interface en de @ end 89 00:04:46,000 --> 00:04:48,000 gaat mijn klas zijn. 90 00:04:48,000 --> 00:04:51,000 Dat gaat worden wat er in onze. H-bestanden. 91 00:04:51,000 --> 00:04:55,000 Net als in C onze. H bestanden in feite gezegd hier zijn enkele dingen die zal bestaan. 92 00:04:55,000 --> 00:04:57,000 Ik ben niet per se te vertellen wat ze nog doen, 93 00:04:57,000 --> 00:04:59,000 maar de compiler moet weten dat ze bestaan. 94 00:04:59,000 --> 00:05:04,000 Later binnenkant van onze. M-bestanden-omdat m voor Objective-C 95 00:05:04,000 --> 00:05:08,000 is waar we daadwerkelijk gaat om te bepalen wat deze klassen doen. 96 00:05:08,000 --> 00:05:11,000 Net als onze. C-bestanden, we voorzien een implementatie voor functies. 97 00:05:11,000 --> 00:05:15,000 Binnenkant van onze. M. bestand gaan we hier zeggen is wat alle functies 98 00:05:15,000 --> 00:05:18,000 binnenkant van mijn klas-wat ze allemaal doen. 99 00:05:18,000 --> 00:05:22,000 En tenslotte, de binnenkant van een struct kunnen we binnen zeggen over de accolades 100 00:05:22,000 --> 00:05:25,000 int n of knooppunt * volgende, 101 00:05:25,000 --> 00:05:28,000 en in Objective-C gaan we het zoekwoord te gebruiken @ onroerend goed, 102 00:05:28,000 --> 00:05:31,000 en dit is wat er aan de hand om de eigenschappen te definiëren, 103 00:05:31,000 --> 00:05:36,000 of de niet-functies die een deel van mijn klassen. 104 00:05:36,000 --> 00:05:40,000 >> Belfuncties in Objective-C is ook bananen. 105 00:05:40,000 --> 00:05:43,000 Als we functies in C verklaard zeiden we iets als int foo 106 00:05:43,000 --> 00:05:46,000 en open haakje en dan gaf het een lijst van argumenten. 107 00:05:46,000 --> 00:05:51,000 Dit is wat verklaren methoden of functies lijkt in Objective-C. 108 00:05:51,000 --> 00:05:54,000 Als ik wil een functie of een methode te verklaren 109 00:05:54,000 --> 00:05:58,000 waar ik zeg methode is eigenlijk alleen maar een functie die is een lid van een klasse, 110 00:05:58,000 --> 00:06:01,000 zo vriendelijk van verwisselbare, maar niet echt, 111 00:06:01,000 --> 00:06:03,000 dus binnenkant van mijn methode wil ik een nieuwe methode te creëren. 112 00:06:03,000 --> 00:06:06,000 Het gaat om niets terug, dus het gaat worden van het type nietig zijn. 113 00:06:06,000 --> 00:06:08,000 Dit is de return type van mijn functie. 114 00:06:08,000 --> 00:06:11,000 Nu hebben we parens hier omdat-ik weet het niet. 115 00:06:11,000 --> 00:06:14,000 Volgende gaat naar de naam van mijn functie zijn, 116 00:06:14,000 --> 00:06:17,000 en dan uiteindelijk hebben we een puntkomma, net als we in C. 117 00:06:17,000 --> 00:06:19,000 Wat is hier nieuw is deze man hier. 118 00:06:19,000 --> 00:06:22,000 Dit streepje is eigenlijk noodzakelijk, en wat dit zegt is dat 119 00:06:22,000 --> 00:06:26,000 deze methode hier moet worden aangeroepen voor een instantie van een klasse. 120 00:06:26,000 --> 00:06:29,000 >> Nadat we onze verklaard structs we waarschijnlijk iets gezegd als 121 00:06:29,000 --> 00:06:32,000 struct knoop n, en dat eigenlijk gemaakt 122 00:06:32,000 --> 00:06:35,000 of geïnstantieerd een van die structs zodat ik kon eigenlijk aan de slag 123 00:06:35,000 --> 00:06:38,000 met wat er in het, dus dit streepje betekent dat we moeten 124 00:06:38,000 --> 00:06:41,000 een instantie van de klasse net als wij geïnstantieerd dat struct 125 00:06:41,000 --> 00:06:43,000 voordat we noemen deze methode op. 126 00:06:43,000 --> 00:06:46,000 Als ik wil beginnen met het toevoegen argumenten om mijn methoden 127 00:06:46,000 --> 00:06:48,000 het wordt nog meer bananen. 128 00:06:48,000 --> 00:06:50,000 Hier is mijn methode naam. 129 00:06:50,000 --> 00:06:53,000 Dan ga ik een dubbele punt te hebben, en na deze dubbele punt staat hier komt een aantal argumenten. 130 00:06:53,000 --> 00:06:56,000 Deze methode houdt een argument. 131 00:06:56,000 --> 00:06:59,000 Het type van het argument is een int, en de naam van dit argument 132 00:06:59,000 --> 00:07:03,000 of de variabele die ik ga om te beginnen met de binnenkant van de methode wordt aangeroepen i. 133 00:07:03,000 --> 00:07:05,000 Ook dit is methode. Het duurt een argument. 134 00:07:05,000 --> 00:07:10,000 >> Als u wilt beginnen met het toevoegen van meer argumenten het wordt meer bananen 135 00:07:10,000 --> 00:07:13,000 in dat wij deze dubbele punt, dat hier zegt, komt mijn lijst met argumenten. 136 00:07:13,000 --> 00:07:15,000 Dit eerste argument is een geheel getal. 137 00:07:15,000 --> 00:07:17,000 Nu, dit tweede argument is interessant. 138 00:07:17,000 --> 00:07:20,000 De variabele die ik ga naar binnen worden met behulp van van mijn functie 139 00:07:20,000 --> 00:07:23,000 heet f, dus binnenkant van mijn functie die ik zou kunnen zeggen 140 00:07:23,000 --> 00:07:25,000 f + = 1 of iets dergelijks. 141 00:07:25,000 --> 00:07:30,000 Dit ding hier is in feite een sleutel voor dat argument of parameter. 142 00:07:30,000 --> 00:07:34,000 Net zoals we hadden de belangrijkste waarde-paren en iets als JSON of associatieve arrays 143 00:07:34,000 --> 00:07:37,000 Objective-C de beslissing genomen om te zeggen, oke, gewoon zo dat het echt duidelijk 144 00:07:37,000 --> 00:07:39,000 wanneer u belt een methode wat al deze parameters zijn 145 00:07:39,000 --> 00:07:41,000 Ik ben eigenlijk ga ze allemaal op te noemen. 146 00:07:41,000 --> 00:07:45,000 Wanneer u een methode aan te roepen, dan heb je eigenlijk zeggen andFloat, 147 00:07:45,000 --> 00:07:47,000 en dan kom je langs het erin 148 00:07:47,000 --> 00:07:50,000 >> Interessant is deze niet genoemd, maar alle andere parameters, 149 00:07:50,000 --> 00:07:53,000 dus als we hadden een 3e argument dat ik zou kunnen zeggen andFloat 150 00:07:53,000 --> 00:07:56,000 en een float enzovoort. 151 00:07:56,000 --> 00:08:01,000 Toen ik deze methoden noemen is natuurlijk bananen, 152 00:08:01,000 --> 00:08:04,000 dus als ik een voorwerp, en ik definieerde een methode genaamd foo, 153 00:08:04,000 --> 00:08:09,000 en ik wil noemen, in plaats van te zeggen foo open / dicht Parens 154 00:08:09,000 --> 00:08:11,000 Ik ga een beugel te openen. 155 00:08:11,000 --> 00:08:13,000 Hier is de naam van mijn methode. 156 00:08:13,000 --> 00:08:17,000 Ik ga aan de beugel te sluiten, en dit is het object Ik bel hem op. 157 00:08:17,000 --> 00:08:20,000 Vergeet niet, al deze methoden bestaan ​​binnen klassen 158 00:08:20,000 --> 00:08:23,000 omdat klassen kunnen hebben methoden die zijn gedefinieerd binnenkant van hen. 159 00:08:23,000 --> 00:08:26,000 >> Hier heb ik willekeurig een object aangemaakt van bepaalde klasse, 160 00:08:26,000 --> 00:08:28,000 en dit is de syntax om dat te doen. 161 00:08:28,000 --> 00:08:31,000 Er zijn 2 doen om een ​​object. 162 00:08:31,000 --> 00:08:34,000 De eerste stap is om te zeggen ik wil ruimte toewijzen. 163 00:08:34,000 --> 00:08:37,000 Dit is het equivalent van een malloc. We hoeven niet meer te zeggen malloc. 164 00:08:37,000 --> 00:08:42,000 We vallen de m, maakte het Alloc, en vervangen de. C met. M.. 165 00:08:42,000 --> 00:08:47,000 Nadat we Alloc iets wat we dan nodig om het te initialiseren. 166 00:08:47,000 --> 00:08:49,000 In principe als je objecten maken wilt u misschien wat logica hebben 167 00:08:49,000 --> 00:08:53,000 die wordt uitgevoerd wanneer ze zijn gemaakt, zodat je kan passeren in een aantal standaard waarden 168 00:08:53,000 --> 00:08:57,000 of iets dergelijks, en dus is deze init methode is wat er werkelijk het object ontstaat. 169 00:08:57,000 --> 00:08:59,000 We hebben eerst toe te wijzen ruimte, net zoals wij deden in C, 170 00:08:59,000 --> 00:09:04,000 en dan initialiseren, die al dan niet een heleboel doen. 171 00:09:04,000 --> 00:09:07,000 Dan zijn we terug dat ding in een object o. 172 00:09:07,000 --> 00:09:09,000 Er is een ster hier, want dit is technisch gezien een pointer, 173 00:09:09,000 --> 00:09:12,000 maar maak je geen zorgen, pointers zijn niet zo groot een deal in Objective-C meer. 174 00:09:12,000 --> 00:09:15,000 >> Nu hebben we geïnstantieerd deze klasse met de naam NSObject, 175 00:09:15,000 --> 00:09:19,000 en dit is slechts een willekeurige klasse die Apple heeft. 176 00:09:19,000 --> 00:09:22,000 We hebben geïnstantieerd dit, en nu heb ik een instantie van deze klasse 177 00:09:22,000 --> 00:09:25,000 in dit object o, dus dat betekent dat als ik bepaalde 178 00:09:25,000 --> 00:09:29,000 deze methoden kon ik noem ze op deze manier. 179 00:09:29,000 --> 00:09:31,000 Evenzo, als ik wilde een methode aan te roepen met een argument, 180 00:09:31,000 --> 00:09:34,000 dus dit is de bar-methode, dat duurt een argument, 181 00:09:34,000 --> 00:09:38,000 en hier is de baz: QHx methode, dus dit duurt 2 argumenten. 182 00:09:38,000 --> 00:09:44,000 Dit roept een functie van dit object o. 183 00:09:44,000 --> 00:09:46,000 Logisch? 184 00:09:46,000 --> 00:09:50,000 De syntaxis moet zinvol zijn, maar je soort van wennen. 185 00:09:50,000 --> 00:09:54,000 >> Oke, laten we praten over een paar dingen die zijn ingebouwd in Objective-C 186 00:09:54,000 --> 00:09:56,000 die niet noodzakelijkerwijs ingebouwd C. 187 00:09:56,000 --> 00:09:59,000 In C hebben we soort van te maken gehad met strings als die stomme personage arrays, 188 00:09:59,000 --> 00:10:01,000 en het werd echt vervelend. 189 00:10:01,000 --> 00:10:04,000 Objective-C heeft die allemaal gebouwd in voor ons, en het is gebouwd in 190 00:10:04,000 --> 00:10:06,000 het gebruik van deze klasse met de naam NSString. 191 00:10:06,000 --> 00:10:10,000 Als ik wil een NSString hebben we meer geheimzinnige syntax te creëren. 192 00:10:10,000 --> 00:10:15,000 In plaats van te zeggen "CS50" zeggen we @ "CS50" 193 00:10:15,000 --> 00:10:17,000 en dit is slechts de syntax voor de aangifte van strings in Objective-C. 194 00:10:17,000 --> 00:10:21,000 Dit is zeer gemakkelijk om te vergeten, dus niet doen. 195 00:10:21,000 --> 00:10:24,000 Nu, zodra ik heb dit, dit is een string, maar merkt 196 00:10:24,000 --> 00:10:26,000 het is echt gewoon een object. 197 00:10:26,000 --> 00:10:30,000 Ik zei NSString, wat betekent dat ik geïnstantieerd de klas 198 00:10:30,000 --> 00:10:32,000 genaamd NSString, die iemand anders heeft geschreven voor mij, 199 00:10:32,000 --> 00:10:35,000 en ze waren erg aardig over, en dus nu 200 00:10:35,000 --> 00:10:37,000 Ik kan gaan bellen methoden op. 201 00:10:37,000 --> 00:10:40,000 Als ik bel de methode lengte op dit object s 202 00:10:40,000 --> 00:10:43,000 het gaat om terug te keren voor mij de lengte van de string. 203 00:10:43,000 --> 00:10:45,000 Dit is net als strlen in C. 204 00:10:45,000 --> 00:10:47,000 Dit zou terugkeren 4. 205 00:10:47,000 --> 00:10:51,000 >> Ook een andere methode die ik zou willen geven om is dit characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Dit is een methode die zegt op deze string s 207 00:10:54,000 --> 00:10:57,000 Ik wil dat je de nulde teken te krijgen, 208 00:10:57,000 --> 00:10:59,000 en dus dit zouden terugkeren om me het karakter c, 209 00:10:59,000 --> 00:11:02,000 en er is een hele hoop meer van deze methoden die u kunt heel gemakkelijk Google. 210 00:11:02,000 --> 00:11:07,000 Apple's documentatie is groot, en we zullen een kijkje nemen op dat in een beetje. 211 00:11:07,000 --> 00:11:09,000 Dat zijn strings. 212 00:11:09,000 --> 00:11:11,000 We hebben ook een variabele grootte arrays ingebouwd 213 00:11:11,000 --> 00:11:13,000 Vergeet niet in C als we verklaarde een array 214 00:11:13,000 --> 00:11:16,000 we moesten zeggen dat je 5 elementen, einde verhaal. 215 00:11:16,000 --> 00:11:18,000 Toen we bij JavaScript en PHP kunnen we beginnen 216 00:11:18,000 --> 00:11:20,000 om dingen te doen zoals het toevoegen van elementen of bewegende elementen. 217 00:11:20,000 --> 00:11:22,000 We kunnen hetzelfde doen in Objective-C. 218 00:11:22,000 --> 00:11:26,000 Dan een array in de normale manier C 219 00:11:26,000 --> 00:11:30,000 hebben we weer een andere klasse NSMutableArray genoemd. 220 00:11:30,000 --> 00:11:33,000 Er is ook NSArray, 221 00:11:33,000 --> 00:11:35,000 en dit gaat in principe in te kapselen sommige array. 222 00:11:35,000 --> 00:11:38,000 Dit zegt het eerste wat ik wil doen is wil ik wijzen 223 00:11:38,000 --> 00:11:41,000 ruimte voor een nieuwe array, en nadat ik wijzen het 224 00:11:41,000 --> 00:11:43,000 Vervolgens heb ik nodig om het te initialiseren. 225 00:11:43,000 --> 00:11:45,000 Nogmaals, alleen het aanroepen van deze 2 methoden. 226 00:11:45,000 --> 00:11:48,000 Nu betekent dat de binnenkant van dit object een 227 00:11:48,000 --> 00:11:50,000 Ik heb een lege array zitten. 228 00:11:50,000 --> 00:11:54,000 Als ik iets wil toevoegen aan deze reeks, kan ik bellen met de addObject methode. 229 00:11:54,000 --> 00:11:59,000 Ik wil een object toe te voegen aan de array een, en ik wil de string CS50 toe te voegen. 230 00:11:59,000 --> 00:12:02,000 Als ik wilde omgekeerd te verwijderen, dat ik kan zeggen dat ik wil 231 00:12:02,000 --> 00:12:09,000 verwijder het voorwerp op de eerste plaats op de array of object een. 232 00:12:09,000 --> 00:12:11,000 >> Logisch? 233 00:12:11,000 --> 00:12:14,000 Oke, je soort van wennen aan deze vierkante haken ding. 234 00:12:14,000 --> 00:12:18,000 By the way, de binnenkant van veel van Apple's bibliotheken zie je deze NS. 235 00:12:18,000 --> 00:12:21,000 De NS staat eigenlijk voor de volgende stap, dat was een van Steve Jobs eerste bedrijven, 236 00:12:21,000 --> 00:12:24,000 en dat is waar hij echt begon te schrijven een groot deel van de code 237 00:12:24,000 --> 00:12:27,000 als een soort basis voor Mac OS X en alle andere dingen, 238 00:12:27,000 --> 00:12:32,000 en dus is deze NS is een soort van deze mooie erfenis uit schreeuwen om een ​​van de eerdere bedrijven 239 00:12:32,000 --> 00:12:34,000 toen Apple voor het eerst begon uit. 240 00:12:34,000 --> 00:12:36,000 Het is overal. 241 00:12:36,000 --> 00:12:41,000 Laten we eens een kijkje nemen op een meer holistische Objective-C bijvoorbeeld. 242 00:12:41,000 --> 00:12:44,000 Hier ben ik de binnenkant van XCode. 243 00:12:44,000 --> 00:12:47,000 Om hier te komen, heb ik eerst gedownload XCode uit de App Store, 244 00:12:47,000 --> 00:12:50,000 opende het, en toen ging ik hier naar bestand, 245 00:12:50,000 --> 00:12:54,000 hier om nieuwe, en dan project. 246 00:12:54,000 --> 00:12:57,000 Nadat ik doen, opdat ik al deze opties van wat ik wil creëren, 247 00:12:57,000 --> 00:12:59,000 en dus zullen we een kijkje nemen op deze opties later, 248 00:12:59,000 --> 00:13:03,000 maar alleen voor dit voorbeeld, omdat we niet daadwerkelijk gaat om een ​​app nog, 249 00:13:03,000 --> 00:13:06,000 Ik kwam hier, en ik zei: Command Line Tool, 250 00:13:06,000 --> 00:13:09,000 en dit is een app die ik kon draaien op de opdrachtregel 251 00:13:09,000 --> 00:13:12,000 net zoals we al die loopt van C. 252 00:13:12,000 --> 00:13:16,000 Dat is hoe ik dit project gemaakt, en dus nu ben ik hier, 253 00:13:16,000 --> 00:13:20,000 dus laten we eerst eens kijken naar dit bestand, en dit moeten kijken redelijk bekend. 254 00:13:20,000 --> 00:13:24,000 Ik heb een int naam. Er is mijn vriend argc, mijn andere vriend argv. 255 00:13:24,000 --> 00:13:30,000 En zo kunnen we zien dat dit het startpunt voor mijn eerste Objective-C toepassing. 256 00:13:30,000 --> 00:13:32,000 Hier kunnen we negeren voor nu. 257 00:13:32,000 --> 00:13:35,000 Dit is in principe een aantal geheugenbeheer dingen die je zal niet echt 258 00:13:35,000 --> 00:13:37,000 ooit zorgen te maken over. 259 00:13:37,000 --> 00:13:39,000 >> Laten we hier kijken naar deze eerste blok. 260 00:13:39,000 --> 00:13:46,000 Deze eerste lijn, als ik zeg Student * alice = [[Student alloc] init] wat is dat nou? 261 00:13:46,000 --> 00:13:50,000 Deze eerste student hier, dit is waarschijnlijk een klasse. 262 00:13:50,000 --> 00:13:54,000 Dit is niet een klasse die Apple schreef, maar het is een klasse die ik geschreven heb. 263 00:13:54,000 --> 00:13:57,000 Het eerste wat ik wil doen is wil ik ruimte voor een nieuwe student toe te wijzen, 264 00:13:57,000 --> 00:14:00,000 en dan wil ik het initialiseren, dus dit geeft mij terug 265 00:14:00,000 --> 00:14:05,000 Deze nieuwe student object, en ik ben het opslaan van deze in een variabele met de naam Alice. 266 00:14:05,000 --> 00:14:07,000 Waar kwam die klasse vandaan? 267 00:14:07,000 --> 00:14:12,000 Wel, hier aan de linkerkant zijn alle verschillende bestanden in mijn project. 268 00:14:12,000 --> 00:14:16,000 We kunnen hier zien dat ik heb een Student.h en een Student.m. 269 00:14:16,000 --> 00:14:20,000 Het. H bestand, vergeet niet, is waar ik verklaar alle dingen 270 00:14:20,000 --> 00:14:22,000 dat zal bestaan ​​binnen de klasse. 271 00:14:22,000 --> 00:14:25,000 >> Laten we eens een kijkje nemen op die. 272 00:14:25,000 --> 00:14:29,000 Oke, hier hebben we dit @ interface, en deze zegt dat hier komt 273 00:14:29,000 --> 00:14:33,000 de verklaringen van alles wat zal bestaan ​​in mijn klas. 274 00:14:33,000 --> 00:14:36,000 Dan heb ik een dubbele punt. Dan heb ik dit NSObject ding. 275 00:14:36,000 --> 00:14:40,000 Deze dubbele punt betekent dat erfenis beetje waren we een beetje vroeger te bespreken. 276 00:14:40,000 --> 00:14:43,000 Dit zegt alles wat een NSObject kan doen 277 00:14:43,000 --> 00:14:46,000 waar NSObject is deze klasse geschreven door iemand anders, 278 00:14:46,000 --> 00:14:50,000 alles wat deze NSObject kan doen Ik wil in staat zijn om dat te doen. 279 00:14:50,000 --> 00:14:54,000 Door te zeggen: NSObject dat betekent dat ik in principe 280 00:14:54,000 --> 00:14:58,000 erfde alle functionaliteit van een andere klasse. 281 00:14:58,000 --> 00:15:02,000 Dat gaf me echt een hele hoop verschillende methoden en eigenschappen die ik kan gebruiken. 282 00:15:02,000 --> 00:15:05,000 Hier beneden Ik ben het creëren van 2 woningen. 283 00:15:05,000 --> 00:15:08,000 Dat betekent dat mijn student, als dit een struct, zouden dit de 2 dingen 284 00:15:08,000 --> 00:15:11,000 binnenkant van mijn struct, zodat elke student heeft een naam 285 00:15:11,000 --> 00:15:14,000 dat is een string, en een student heeft ook een graad, 286 00:15:14,000 --> 00:15:17,000 die een int. 287 00:15:17,000 --> 00:15:23,000 >> Tot slot, hier beneden Ik ga op een werkwijze voor mijn student te creëren. 288 00:15:23,000 --> 00:15:26,000 Ik belde mijn methode, initWithName, en het duurt een argument, 289 00:15:26,000 --> 00:15:31,000 en dat argument is een string, en ik noemde het noemen. 290 00:15:31,000 --> 00:15:35,000 Laten we nu eens kijken hoe we daadwerkelijk geïmplementeerd deze klasse. 291 00:15:35,000 --> 00:15:38,000 Hier, nu ben ik de binnenkant van mijn. M-bestand, 292 00:15:38,000 --> 00:15:40,000 m voor de uitvoering, denk ik. 293 00:15:40,000 --> 00:15:44,000 Ik heb mijn implementatie, mijn einde, en hier is waar ik eigenlijk het definiëren van 294 00:15:44,000 --> 00:15:47,000 initWithName wat doet. 295 00:15:47,000 --> 00:15:50,000 Ik heb initWithName, de naam van mijn parameter, en dit 296 00:15:50,000 --> 00:15:53,000 is waar ik eigenlijk het creëren van een student, 297 00:15:53,000 --> 00:15:56,000 en dus dit is een beetje cryptisch, maar dit is een soort van standaardtekst 298 00:15:56,000 --> 00:15:58,000 die u wilt opnemen in uw constructeurs. 299 00:15:58,000 --> 00:16:02,000 Deze initialisatie functie hier, initWithName, is een soort constructor. 300 00:16:02,000 --> 00:16:05,000 Je bent in principe de bouw van een nieuwe leerling object 301 00:16:05,000 --> 00:16:07,000 en misschien het verzenden van een aantal gegevens binnen van het. 302 00:16:07,000 --> 00:16:11,000 Het eerste wat ik wil doen is wil ik noemen init op deze super ding. 303 00:16:11,000 --> 00:16:15,000 >> Vergeet niet dat toen ik zei dat hier in de. H-bestand 304 00:16:15,000 --> 00:16:21,000 dat alles een NSObject heeft een student ook. 305 00:16:21,000 --> 00:16:24,000 Dat betekent dat als ik een leerling wat ik ook moet doen is het creëren 306 00:16:24,000 --> 00:16:28,000 Zorg ervoor dat de NSObject dat ik al die gegevens erven van 307 00:16:28,000 --> 00:16:32,000 Ook correct geïnitialiseerd. 308 00:16:32,000 --> 00:16:36,000 Wat ik nodig heb te zeggen is dit super er werkelijk gaande is te verwijzen naar de bovenliggende klasse 309 00:16:36,000 --> 00:16:39,000 dat ik geërfd uit, dus ik wil zeker weten dat ik initialiseren 310 00:16:39,000 --> 00:16:43,000 alles wat ik ben afhankelijk van voordat ik begin te proberen om het te gebruiken. 311 00:16:43,000 --> 00:16:46,000 Als dat dan geïnitialiseerd goed dit is net als zeggen dat als malloc 312 00:16:46,000 --> 00:16:50,000 kwam niet terug null dan kan ik beginnen met het instellen een aantal eigenschappen. 313 00:16:50,000 --> 00:16:54,000 >> In JavaScript en PHP we hadden dit trefwoord noemde dit, 314 00:16:54,000 --> 00:16:58,000 en dit verwees naar de huidige instantie van een klasse. 315 00:16:58,000 --> 00:17:00,000 In Objective-C noemen we dit zelf. 316 00:17:00,000 --> 00:17:04,000 Als ik self.name zeggen, dat betekent dat het object 317 00:17:04,000 --> 00:17:07,000 Ik heb zojuist, toen ik zei student Alloc init, 318 00:17:07,000 --> 00:17:09,000 dat gaat mij terug te geven een object. 319 00:17:09,000 --> 00:17:12,000 Dat betekent dat ik wil de naam van dat object instellen 320 00:17:12,000 --> 00:17:15,000 naar wat ik gewoon voorbij inch 321 00:17:15,000 --> 00:17:18,000 Net als in C, we toegang tot de leden met deze stip, 322 00:17:18,000 --> 00:17:21,000 dus self.name zegt dat de naam van de student object 323 00:17:21,000 --> 00:17:24,000 gaat nu zijn wat je gewoon voorbij inch 324 00:17:24,000 --> 00:17:28,000 En dus eindelijk, kan ik deze retourneren zodat ik ook echt iets terug. 325 00:17:28,000 --> 00:17:30,000 >> Vragen? 326 00:17:30,000 --> 00:17:34,000 Oke, dus dit zelf = super init, 327 00:17:34,000 --> 00:17:37,000 als je het niet helemaal begrijpt de erfenis dingen maak je geen zorgen. 328 00:17:37,000 --> 00:17:40,000 Weet gewoon dat als je ooit wilt uw eigen init methode maken net 329 00:17:40,000 --> 00:17:42,000 dat te doen, en je zult goed om te gaan. 330 00:17:42,000 --> 00:17:44,000 Ja. >> [Student] Wat doet als zelf in? 331 00:17:44,000 --> 00:17:49,000 Dit betekent dat wanneer we malloc iets wat we altijd gecontroleerd of het was gelijk aan null, 332 00:17:49,000 --> 00:17:51,000 en als het null, dan verlaten. 333 00:17:51,000 --> 00:17:55,000 Dit is hetzelfde, want als deze retourneert nul, dan zijn we waarschijnlijk gaan seg fout 334 00:17:55,000 --> 00:17:57,000 als we beginnen proberen te manipuleren. 335 00:17:57,000 --> 00:18:01,000 Dat is onze student klas. 336 00:18:01,000 --> 00:18:03,000 Dat betekent dat we kunnen onze studenten initialiseren in een van twee manieren. 337 00:18:03,000 --> 00:18:08,000 Als ik zeg student alloc init Ik ben niet met behulp van die methode die ik net schreef, 338 00:18:08,000 --> 00:18:11,000 en in plaats daarvan kan ik alleen maar zeggen alice.name, 339 00:18:11,000 --> 00:18:14,000 en nu ga ik die eigenschap in te stellen. 340 00:18:14,000 --> 00:18:17,000 >> Evenzo, als ik wil dat initWithName methode te gebruiken 341 00:18:17,000 --> 00:18:20,000 Ik kan alleen maar zeggen Alloc, en dan in plaats van te zeggen init 342 00:18:20,000 --> 00:18:24,000 Ik ga die methode die ik zojuist te bellen, en ik ga pas in Bob. 343 00:18:24,000 --> 00:18:30,000 Op dit punt, dit object Bob een naam gelijk aan Bob. 344 00:18:30,000 --> 00:18:35,000 Oke, hier beneden Ik gebruik dat NSMutableArray dat we eerder hebben bekeken. 345 00:18:35,000 --> 00:18:38,000 Ik ben toewijzing space.Then ik het initialiseren van een nieuwe array. 346 00:18:38,000 --> 00:18:40,000 Ik ga 2 dingen aan toe te voegen. 347 00:18:40,000 --> 00:18:43,000 Deze array heeft nu student daartegen bezwaar heeft. 348 00:18:43,000 --> 00:18:46,000 Merk op dat nergens heb ik moet zeggen dat dit is een array van studenten. 349 00:18:46,000 --> 00:18:48,000 Ik zei dat het een array, periode. 350 00:18:48,000 --> 00:18:50,000 Dan kan ik zetten wat de binnenkant van het dat ik wil. 351 00:18:50,000 --> 00:18:52,000 Hier heb ik 2 objecten. 352 00:18:52,000 --> 00:18:56,000 >> Tot slot, ik heb een ander object hier, dit TF. 353 00:18:56,000 --> 00:18:59,000 Hier in TF.h in principe hetzelfde. 354 00:18:59,000 --> 00:19:01,000 Ik erven van NSObject, en door de manier, 355 00:19:01,000 --> 00:19:03,000 wanneer je lessen maakt dit alles voor u gedaan, 356 00:19:03,000 --> 00:19:06,000 dit soort interface standaardtekst. 357 00:19:06,000 --> 00:19:08,000 Het heeft een eigenschap van leerlingen. 358 00:19:08,000 --> 00:19:15,000 Ik heb een paar methoden die hier die niet echt heel veel, 359 00:19:15,000 --> 00:19:18,000 en dus dat betekent dat nadat ik deze TF-object te maken 360 00:19:18,000 --> 00:19:23,000 Ik kan deze methode aanroepen cijfer op het zo. 361 00:19:23,000 --> 00:19:26,000 Hebt u vragen over Objective-C syntax voordat we beginnen te bewegen in een aantal meer 362 00:19:26,000 --> 00:19:30,000 interessante apps ontwikkeling spullen? 363 00:19:30,000 --> 00:19:34,000 >> Oke, dus laten we eigenlijk een iPhone app te maken. 364 00:19:34,000 --> 00:19:39,000 De kern klassen die u zult binnen worden met behulp van uw iPhone app heten uitzicht controllers, 365 00:19:39,000 --> 00:19:42,000 en een uitzicht controller vormt in feite een enkel scherm 366 00:19:42,000 --> 00:19:46,000 binnenkant van uw app, dus als ik op de muziek app, bijvoorbeeld, 367 00:19:46,000 --> 00:19:50,000 een weergave controller kunnen vertegenwoordigen de weergave waarin ik alle nummers bekijken op mijn iPhone. 368 00:19:50,000 --> 00:19:53,000 Een andere kijk controller zou kunnen zijn als ik op een liedje en beginnen te spelen 369 00:19:53,000 --> 00:19:55,000 of zoals ik het boren naar beneden in kunstenaars. 370 00:19:55,000 --> 00:19:59,000 Elk van de verschillende schermen kan worden weergegeven als een anders controller, 371 00:19:59,000 --> 00:20:04,000 en een uitzicht controller is eigenlijk gewoon een klasse die zegt hoe dit scherm werkt. 372 00:20:04,000 --> 00:20:07,000 Dingen binnenkant van het oog controller, gaan we eigenschappen hebben, 373 00:20:07,000 --> 00:20:10,000 dus dingen als een knop gaat een eigenschap van onze visie controller. 374 00:20:10,000 --> 00:20:13,000 >> We zijn ook gaan om methoden te hebben, en deze zijn in principe event handlers. 375 00:20:13,000 --> 00:20:16,000 Deze methode zegt dat wanneer u op deze knop drukt 376 00:20:16,000 --> 00:20:19,000 Ik wil iets doen, en tot slot, nogmaals, 377 00:20:19,000 --> 00:20:24,000 we gaan worden met behulp van deze zelf sleutelwoord om de huidige instantie te openen. 378 00:20:24,000 --> 00:20:29,000 Om interfaces te bouwen in iOS is eigenlijk heel, heel gemakkelijk. 379 00:20:29,000 --> 00:20:32,000 Ze hebben deze mooie drag-and-drop interface genaamd Interface Builder, 380 00:20:32,000 --> 00:20:37,000 en de 2 kernbegrippen die draad-up van uw Objective-C Interface Builder 381 00:20:37,000 --> 00:20:40,000 zijn IBOutlet en IBAction. 382 00:20:40,000 --> 00:20:44,000 Een IBOutlet zegt gewoon dat als je een eigenschap die is een knop te verklaren, 383 00:20:44,000 --> 00:20:47,000 en u wilt het aansluiten op iets in uw huidige UI, 384 00:20:47,000 --> 00:20:49,000 je gaat zeggen dat het een stopcontact. 385 00:20:49,000 --> 00:20:51,000 Evenzo, als je wilt om een ​​event handler te vertegenwoordigen 386 00:20:51,000 --> 00:20:54,000 dan ga je zeggen dat het een actie. 387 00:20:54,000 --> 00:20:57,000 >> Om daadwerkelijk bedraden dit grafische weergave 388 00:20:57,000 --> 00:21:00,000 en uw code het is echt, echt eenvoudig. 389 00:21:00,000 --> 00:21:03,000 Als u een IBOutlet bevestigen, alles wat je hoeft te doen is je controle klik, 390 00:21:03,000 --> 00:21:05,000 en we zullen zien een voorbeeld van deze echt snel. 391 00:21:05,000 --> 00:21:07,000 Je bestuurt op de plaats waar het zegt View Controller. 392 00:21:07,000 --> 00:21:09,000 Je gaat slepen in de interface, of omgekeerd, 393 00:21:09,000 --> 00:21:13,000 als je wilt aansluiten een event handler je gaat slepen van de interface 394 00:21:13,000 --> 00:21:15,000 in de andere richting. 395 00:21:15,000 --> 00:21:20,000 Laten we eens een kijkje nemen op een heel eenvoudige iOS voorbeeld. 396 00:21:20,000 --> 00:21:23,000 >> Laten we een nieuw project. 397 00:21:23,000 --> 00:21:25,000 Ik ga hier te komen naar toepassing, 398 00:21:25,000 --> 00:21:28,000 en ik ga Single View Application klikken. 399 00:21:28,000 --> 00:21:31,000 Ik ga naar de volgende klik. Ik zal mijn project een naam te geven. 400 00:21:31,000 --> 00:21:33,000 Ik noem het Hello. 401 00:21:33,000 --> 00:21:36,000 Interessant is dat Apple aanvaardt u een product creëren 402 00:21:36,000 --> 00:21:38,000 zodat u kunt verkopen en ze kunnen geld verdienen. 403 00:21:38,000 --> 00:21:41,000 Hier beneden Ik ga zeggen dat dit een iPhone app. 404 00:21:41,000 --> 00:21:44,000 U kunt een iPad app, of als u wilt een van deze apps te maken 405 00:21:44,000 --> 00:21:47,000 die ondersteuning biedt voor beide apparaten kunt u ook doen. 406 00:21:47,000 --> 00:21:49,000 Dit zijn wat je wilt dat je vinkjes te lijken. 407 00:21:49,000 --> 00:21:51,000 >> U wilt storyboards, die we later zullen zien gebruiken, 408 00:21:51,000 --> 00:21:54,000 en u zeker wilt automatische reference counting te gebruiken, 409 00:21:54,000 --> 00:21:58,000 dat is een leuke feature die voorkomt dat je hoeft te zeggen malloc en free. 410 00:21:58,000 --> 00:22:03,000 Tenzij je wilt bellen malloc en gratis, zou ik laat dit aangevinkt. 411 00:22:03,000 --> 00:22:07,000 Ik zal volgende klik, en ten slotte, dit gaat om te vragen waar ik het wilt opslaan. 412 00:22:07,000 --> 00:22:14,000 Ik raakte te maken, en daar gaan we. 413 00:22:14,000 --> 00:22:16,000 Ik heb een nieuw project. 414 00:22:16,000 --> 00:22:19,000 Hier aan de linkerkant zijn alle bestanden die zijn binnenkant van mijn project, 415 00:22:19,000 --> 00:22:22,000 en merk dat ik een hele hoop gekregen, en ik heb niet eens iets doen. 416 00:22:22,000 --> 00:22:24,000 IOS is geweldig. 417 00:22:24,000 --> 00:22:27,000 >> Bijvoorbeeld, hier deze ViewController.h, 418 00:22:27,000 --> 00:22:30,000 dit wordt mijn eerste opvatting controller vertegenwoordigen, 419 00:22:30,000 --> 00:22:32,000 dus het eerste scherm binnenkant van mijn app. 420 00:22:32,000 --> 00:22:34,000 Nu weten we wat deze zegt. 421 00:22:34,000 --> 00:22:36,000 We zeggen dat ik deze klasse ViewController bellen, 422 00:22:36,000 --> 00:22:40,000 en een ViewController doet alles wat een UIViewController doet, 423 00:22:40,000 --> 00:22:43,000 en dit, nogmaals, is enige klasse die Apple schreef dat doet veel handige dingen voor ons 424 00:22:43,000 --> 00:22:46,000 graag weer te geven op het scherm. 425 00:22:46,000 --> 00:22:50,000 Hier is waar ik eigenlijk kan beginnen te definiëren wat mij controller doet, 426 00:22:50,000 --> 00:22:52,000 en het blijkt dat ik echt niet nodig een van deze. 427 00:22:52,000 --> 00:22:55,000 Dit is boilerplate code dat Apple mij geeft gratis. 428 00:22:55,000 --> 00:22:59,000 Ik heb nodig dat eerste regel, of ik heb geen klasse, 429 00:22:59,000 --> 00:23:02,000 dus we kunnen ontdoen van die en zich te ontdoen van deze. 430 00:23:02,000 --> 00:23:05,000 Oke, dus dit is mijn lege scherm. 431 00:23:05,000 --> 00:23:08,000 >> Laten we nu eens klikken op deze MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 en dit is waar het interessant begint te worden. 433 00:23:11,000 --> 00:23:14,000 Dit is de eerste scherm op mijn app. 434 00:23:14,000 --> 00:23:17,000 Als ik wil een knop toe te voegen, in HTML moest ik een knop label aan te maken. 435 00:23:17,000 --> 00:23:20,000 In Android moet je een knop tag te maken, 436 00:23:20,000 --> 00:23:23,000 maar in iOS als ik gewoon hier te komen tot op de bodem rechts 437 00:23:23,000 --> 00:23:27,000 en als ik hier op deze 3de waar het zegt Objects, 438 00:23:27,000 --> 00:23:31,000 en ik kan naar beneden scrollen, of ik kan beginnen met zoeken naar de knop. 439 00:23:31,000 --> 00:23:35,000 En kijk, een knop, dus als ik eigenlijk slepen en daar neer dit recht, 440 00:23:35,000 --> 00:23:38,000 Ik heb net een toets om dit scherm op mijn app. 441 00:23:38,000 --> 00:23:41,000 Als ik de tekst wilt wijzigen, kan ik dubbelklik erop, 442 00:23:41,000 --> 00:23:47,000 iets zeggen verleidelijke als "Druk op Mij." 443 00:23:47,000 --> 00:23:51,000 Oke, nu als ik zonder deze app, dus we compileren, 444 00:23:51,000 --> 00:23:54,000 dus om het te draaien ik op de play knop in de linkerbovenhoek, en daar is mijn app. 445 00:23:54,000 --> 00:23:58,000 Ik heb niks gedaan, en ik kreeg een lief zoekt iPhone app. 446 00:23:58,000 --> 00:24:01,000 Als ik wil om het te stoppen, klikt u op de stop-knop 447 00:24:01,000 --> 00:24:03,000 want het is leuker. 448 00:24:03,000 --> 00:24:07,000 >> Laten we zeggen dat ik eigenlijk iets te gebeuren als ik op deze knop wilt. 449 00:24:07,000 --> 00:24:09,000 Om dat te doen wat ik moet doen is dat ik moet maken 450 00:24:09,000 --> 00:24:13,000 een nieuwe event-handler of een actie. 451 00:24:13,000 --> 00:24:16,000 Dat betekent dat ik moet een methode die ik wil noemen creëren 452 00:24:16,000 --> 00:24:18,000 als ik op de knop drukt, dus laten we een nieuwe methode. 453 00:24:18,000 --> 00:24:20,000 Ik ben binnenkant van ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Ik moet zeggen dat een methode bestaat. 455 00:24:22,000 --> 00:24:26,000 Ik heb een koppelteken eerste omdat ik ga moeten bellen dit op het uitzicht controller. 456 00:24:26,000 --> 00:24:28,000 Ik moet geven deze een type. 457 00:24:28,000 --> 00:24:31,000 Het type van deze gaat dat IBAction ding dat we eerder zagen zijn. 458 00:24:31,000 --> 00:24:35,000 Dit is een event handler, dus het gaat om een ​​IBAction terug te keren, 459 00:24:35,000 --> 00:24:38,000 en dit is een hint voor XCode om te zeggen dat 460 00:24:38,000 --> 00:24:40,000 dit is iets wat ik wil iets draad aan. 461 00:24:40,000 --> 00:24:45,000 Ik kan het een naam geven, zoals buttonPressed, puntkomma. 462 00:24:45,000 --> 00:24:48,000 >> Nu heb ik uitgeroepen tot een nieuwe methode binnenkant van mijn klas. 463 00:24:48,000 --> 00:24:50,000 Ik heb gezegd deze methode te bestaan. 464 00:24:50,000 --> 00:24:53,000 Laten we nu eens komen ViewController.m, 465 00:24:53,000 --> 00:24:56,000 en laten we zeggen wat deze methode kan doen. 466 00:24:56,000 --> 00:25:03,000 Als ik begin te typen, bijvoorbeeld, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 aankondiging XCode is echt mooi en autocompletes voor mij. 468 00:25:06,000 --> 00:25:09,000 Dat is echt geweldig. 469 00:25:09,000 --> 00:25:12,000 Let hier op dat de binnenkant van de. M. bestand dat ik ook kan leegte zeggen, 470 00:25:12,000 --> 00:25:15,000 en dit is omdat dat IBAction is niet echt een type. 471 00:25:15,000 --> 00:25:19,000 Het is eigenlijk hashtag ergens gedefinieerd als een nietig, 472 00:25:19,000 --> 00:25:22,000 en nogmaals, dit is slechts een hint naar XCode dat zegt 473 00:25:22,000 --> 00:25:25,000 Ik wil dat dit een event handler te zijn, en we zullen zien waarom in slechts een seconde. 474 00:25:25,000 --> 00:25:28,000 Wanneer deze toets wordt ingedrukt, Ik ga iets vervelend doen 475 00:25:28,000 --> 00:25:30,000 graag weer een popup. 476 00:25:30,000 --> 00:25:35,000 >> Om dat te doen kan ik een nieuwe instantie van deze klasse met de naam UIAlertView te creëren, 477 00:25:35,000 --> 00:25:39,000 en dit is een klasse die Apple schreef dat gaat vervelende pop-ups weer te geven. 478 00:25:39,000 --> 00:25:43,000 We noemen dit popup alert, en ik heb 2 stappen, vergeet niet, tot het creëren van dit object. 479 00:25:43,000 --> 00:25:46,000 Het eerste wat ik moet doen is toe te wijzen ruimte. 480 00:25:46,000 --> 00:25:48,000 Ik wil een UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Ik wil ruimte toewijzen. Dat is mijn eerste methode. 482 00:25:51,000 --> 00:25:53,000 Mijn volgende methode is wil ik het initialiseren, 483 00:25:53,000 --> 00:25:58,000 en dus heb ik deze grote, lange methode genaamd initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Dat is in principe gaat om te bepalen wat deze popup zegt. 485 00:26:01,000 --> 00:26:04,000 De titel van mijn popup kan hello. 486 00:26:04,000 --> 00:26:08,000 De boodschap van deze popup kan worden: "Dit is iOS." 487 00:26:08,000 --> 00:26:10,000 Afgevaardigde ding, ik weet niet wat dat is. 488 00:26:10,000 --> 00:26:13,000 Laten we zeggen dat het niets is. 489 00:26:13,000 --> 00:26:18,000 Nu is de knop die gaat verschijnen kan iets zeggen als "Het is zeker," 490 00:26:18,000 --> 00:26:24,000 en ik heb niet echt wil geen andere knoppen, dus laten we verwijderen dat en sluit de beugel. 491 00:26:24,000 --> 00:26:27,000 >> Oke, heb ik een extra is. Daar gaan we dan. 492 00:26:27,000 --> 00:26:30,000 Dit is hoe ik kan een nieuwe popup. 493 00:26:30,000 --> 00:26:35,000 Als ik wil eigenlijk tonen de popup Ik wil de show methode aan te roepen. 494 00:26:35,000 --> 00:26:38,000 Om dat te doen kan ik alert en show zeggen, 495 00:26:38,000 --> 00:26:40,000 en nogmaals, autocomplete was super leuk. 496 00:26:40,000 --> 00:26:42,000 Als ik ben vergeten wat dat was, als ik getypt in s, 497 00:26:42,000 --> 00:26:45,000 Ik kan hier bladeren door om erachter te komen wat het was, 498 00:26:45,000 --> 00:26:48,000 en het filtert mooi. 499 00:26:48,000 --> 00:26:52,000 Nu heb ik deze nieuwe pop-up. 500 00:26:52,000 --> 00:26:55,000 We zullen later terugkomen op wat afgevaardigde betekent, 501 00:26:55,000 --> 00:26:58,000 en nu wil ik zeggen dat ik wil deze methode worden ontslagen 502 00:26:58,000 --> 00:27:01,000 als ik op de knop drukt, dus ik ga om terug te komen op mijn storyboard, 503 00:27:01,000 --> 00:27:04,000 en ik wil nu bevestigen dit IBAction. 504 00:27:04,000 --> 00:27:06,000 Het eerste wat je wilt doen is op de knop. 505 00:27:06,000 --> 00:27:08,000 Als ik op deze knop drukt Ik wil dat er iets gebeurt. 506 00:27:08,000 --> 00:27:10,000 Ik ga niet ingedrukt te houden controle. 507 00:27:10,000 --> 00:27:13,000 Ik ga om te klikken en op de button te slepen 508 00:27:13,000 --> 00:27:15,000 tot meer dan hier, waar het zegt View Controller. 509 00:27:15,000 --> 00:27:17,000 We kunnen zien dat het mooi oplicht. 510 00:27:17,000 --> 00:27:22,000 >> Als ik laat gaan met mijn muis heb ik nu deze pop-up meer dan hier, waar ik een aantal opties. 511 00:27:22,000 --> 00:27:24,000 Een van deze is de gebeurtenissen die ik kan registreren. 512 00:27:24,000 --> 00:27:28,000 Dit zijn allemaal van die methoden verklaarde ik in mijn h bestand als IBActions. 513 00:27:28,000 --> 00:27:31,000 Dit is hoe XCode weet wat moet worden weergegeven in deze kleine lijst, 514 00:27:31,000 --> 00:27:33,000 dus dat is gewoon een hint. 515 00:27:33,000 --> 00:27:37,000 Als ik klik op de knop gedrukt, heb ik nu geregistreerd de gebeurtenis-handler. 516 00:27:37,000 --> 00:27:41,000 In JavaScript moesten we zeggen dat ik een aantal code die de gebeurtenis-handler geregistreerd. 517 00:27:41,000 --> 00:27:43,000 In Objective-C was het echt zo makkelijk. 518 00:27:43,000 --> 00:27:46,000 Als ik zonder dit weer 519 00:27:46,000 --> 00:27:49,000 nu als ik op de knop druk mijn event handler gaat ontslaan, 520 00:27:49,000 --> 00:27:51,000 en ik ga om dit popup. 521 00:27:51,000 --> 00:27:54,000 Super, super eenvoudig daar. 522 00:27:54,000 --> 00:27:57,000 >> Als je ooit wilt alle van de gebeurtenissen die worden geregistreerd zien 523 00:27:57,000 --> 00:28:00,000 op een component als ik klik op deze knop 524 00:28:00,000 --> 00:28:02,000 en ik kom hier naar de rechterkant 525 00:28:02,000 --> 00:28:05,000 eerst moet je hier kunt zien dan kan ik dingen doen, zoals het type van de knop, 526 00:28:05,000 --> 00:28:08,000 dus als je wilt een van die I's of de add contact knop 527 00:28:08,000 --> 00:28:10,000 of wat dan ook. 528 00:28:10,000 --> 00:28:13,000 Als ik wil alle van de gebeurtenissen die zich op deze knop te zien 529 00:28:13,000 --> 00:28:16,000 als ik kom helemaal hier naar de rechterkant 530 00:28:16,000 --> 00:28:19,000 kunnen we hier zien op de gebeurtenissen die ik heb al deze verschillende evenementen. 531 00:28:19,000 --> 00:28:23,000 Ik kan op de knop drukt, laat ik de knop los, toen ik tik verdubbelen of wat dan ook, 532 00:28:23,000 --> 00:28:26,000 en degene die ik net ingeschreven is dit evenement genaamd Touch Inside Up, 533 00:28:26,000 --> 00:28:29,000 en dit zegt dat zodra mijn vinger komt uit de knop 534 00:28:29,000 --> 00:28:32,000 dat geval gaat om brand, en dat is precies wat er net gebeurd. 535 00:28:32,000 --> 00:28:36,000 Dit is een soort van de standaard knop ingedrukt evenement. 536 00:28:36,000 --> 00:28:39,000 >> Eventuele vragen tot nu toe? 537 00:28:39,000 --> 00:28:43,000 Oke, dat is hoe we kunnen beginnen met bedraden dingen in onze code 538 00:28:43,000 --> 00:28:46,000 in dingen binnenkant van onze interface. 539 00:28:46,000 --> 00:28:49,000 Vergeet niet het eerste wat we moesten doen was om de code te vinden, 540 00:28:49,000 --> 00:28:54,000 en dan hebben we bedraad de interface naar de code, 541 00:28:54,000 --> 00:28:57,000 en er is onze eerste app. 542 00:28:57,000 --> 00:29:00,000 Oke, dat was echt cool, en hebben we op deze knop. 543 00:29:00,000 --> 00:29:03,000 Wat als we niet willen hebben om een ​​bos van eigenschappen te creëren 544 00:29:03,000 --> 00:29:05,000 vertegenwoordigen deze knoppen? 545 00:29:05,000 --> 00:29:08,000 Bijvoorbeeld, in Tic Tac Toe Ik heb 9 knoppen, 546 00:29:08,000 --> 00:29:11,000 en het zou super, super vervelend om te slepen en neerzetten 9 keer 547 00:29:11,000 --> 00:29:14,000 of als ik moest Tic Tac Toe te maken met 81 in plaats van 9 548 00:29:14,000 --> 00:29:17,000 en ik moest slepen en 81 keer laten vallen, en dat is lame. 549 00:29:17,000 --> 00:29:20,000 Wat we wel kunnen doen in plaats is net als een HTML- 550 00:29:20,000 --> 00:29:23,000 toen we dingen als ID's en namen en we kunnen zoeken naar dingen 551 00:29:23,000 --> 00:29:27,000 door hun ID, is er een soortgelijke gedachte in iOS tags genoemd. 552 00:29:27,000 --> 00:29:31,000 >> Een tag is gewoon een unieke numerieke identificatie van een component. 553 00:29:31,000 --> 00:29:34,000 Als ik zeggen dat dit een tag van 0 bijvoorbeeld 554 00:29:34,000 --> 00:29:38,000 Als ik een knop en geef het een label van 0, en we zullen zien hoe dat te doen in slechts een seconde, 555 00:29:38,000 --> 00:29:41,000 als ik wil die knop krijg ik kan alleen maar zeggen dat ik wil bellen 556 00:29:41,000 --> 00:29:45,000 de viewWithTag methode op het object hier, 557 00:29:45,000 --> 00:29:48,000 de self.view, dat het huidige scherm staat, bijvoorbeeld. 558 00:29:48,000 --> 00:29:53,000 Als ik noem dat viewWithTag methode, ik ga terug te trekken op de knop met tag 0. 559 00:29:53,000 --> 00:29:58,000 Laten we eens een kijkje nemen op dit door het bouwen van Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Ten eerste, dit is mijn storyboard. 561 00:30:01,000 --> 00:30:05,000 Ik heb gemaakt deze 10 UI knoppen. 562 00:30:05,000 --> 00:30:07,000 Let op ze zijn allemaal even groot. 563 00:30:07,000 --> 00:30:11,000 Als ik op een van deze en ik kom terug hier op deze rechts 564 00:30:11,000 --> 00:30:15,000 je zult zien dat ik het lettertype aangepast hier, dus maakte ik het lettertype iets groter, 565 00:30:15,000 --> 00:30:19,000 maar wat ik ook deed, was ik deze tag. 566 00:30:19,000 --> 00:30:23,000 Ik zei dat dit een tag van 1 heeft, en dat is de linkerbovenhoek. 567 00:30:23,000 --> 00:30:26,000 >> Nu, als ik klik op een andere knop, zoals deze tweede hier, 568 00:30:26,000 --> 00:30:29,000 nu zal je zien dat mijn tag is 2. 569 00:30:29,000 --> 00:30:32,000 Elk van deze knoppen heeft alleen een unieke tag, 570 00:30:32,000 --> 00:30:35,000 en dus dit wordt later hoe ik ga beginnen interactie 571 00:30:35,000 --> 00:30:38,000 met mijn app. 572 00:30:38,000 --> 00:30:40,000 Dit is allemaal binnenkant van een view controller, 573 00:30:40,000 --> 00:30:42,000 maar hier is wat we hebben. 574 00:30:42,000 --> 00:30:44,000 Wij hebben 3 woningen hier. 575 00:30:44,000 --> 00:30:49,000 De eerste en de laatste gaan naar de toestand van mijn bord te vertegenwoordigen. 576 00:30:49,000 --> 00:30:53,000 In principe is dit eerste is een array die waar de X'en en O's zijn. 577 00:30:53,000 --> 00:30:57,000 Deze andere vertelt ons wiens beurt het is. 578 00:30:57,000 --> 00:31:01,000 U zult merken dat ik ook deze dingen hier. 579 00:31:01,000 --> 00:31:05,000 Toen we eigenschappen die zijn gedeclareerd gaven we ze een naam en een type. 580 00:31:05,000 --> 00:31:08,000 We kunnen ook geven ze wat extra informatie hier. 581 00:31:08,000 --> 00:31:11,000 Deze eerste zegt nonatomic, en wat dit zegt 582 00:31:11,000 --> 00:31:16,000 is in principe maar een ding ooit zal proberen om deze variabele te openen op een moment. 583 00:31:16,000 --> 00:31:19,000 Je zou kunnen doen meer complexe toepassingen die zijn multi-threaded, 584 00:31:19,000 --> 00:31:22,000 en zo terug in de Scratch hadden we verschillende draden, 585 00:31:22,000 --> 00:31:25,000 en verschillende sprites zou kunnen doen verschillende dingen op hetzelfde moment. 586 00:31:25,000 --> 00:31:29,000 >> Als dat niet het geval is, wat niet het is in alles wat we kijken naar, 587 00:31:29,000 --> 00:31:33,000 als we zeggen nonatomic het is daadwerkelijk gaat om dingen een beetje sneller. 588 00:31:33,000 --> 00:31:37,000 Wij hebben ook dit ding genaamd toewijzen, sterk of zwak. 589 00:31:37,000 --> 00:31:40,000 Toewijzen Dit zegt alleen dat dit een standaard type. 590 00:31:40,000 --> 00:31:43,000 Dit is niet een object of een pointer, want dit is gewoon een bool, 591 00:31:43,000 --> 00:31:46,000 dus bool is ingebouwd in Objective-C. 592 00:31:46,000 --> 00:31:49,000 Dit zegt niet proberen om iets bijzonders met pointers hier doen. 593 00:31:49,000 --> 00:31:51,000 Het is een gewone oude scaler. 594 00:31:51,000 --> 00:31:54,000 Sterke en zwakke, deze zwakke zegt dat eigenlijk 595 00:31:54,000 --> 00:31:57,000 Ik wil dat dit te wijzen op iets in de weergave controller. 596 00:31:57,000 --> 00:32:00,000 Ik ben niet van plan om daadwerkelijk toe te wijzen of init dit zelf. 597 00:32:00,000 --> 00:32:04,000 De interface builder, toen ik de app draaien, gaat alles wat initialisatie af te handelen. 598 00:32:04,000 --> 00:32:07,000 Als ik zeg zwak, dat zegt iemand anders zal worden het creëren van deze. 599 00:32:07,000 --> 00:32:09,000 Als ik zeg sterk, deze zegt dat ik ga de een 600 00:32:09,000 --> 00:32:12,000 dat is het creëren van dit board object, 601 00:32:12,000 --> 00:32:14,000 en dus hier heb ik wat meer methoden hier, 602 00:32:14,000 --> 00:32:18,000 bijvoorbeeld een actie voor wanneer de nieuwe game wordt ingedrukt, 603 00:32:18,000 --> 00:32:20,000 een actie voor als een van de andere knoppen worden ingedrukt, 604 00:32:20,000 --> 00:32:23,000 en et cetera. 605 00:32:23,000 --> 00:32:26,000 >> We gaan nu niet in te veel van de logica van Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 hoewel het heel spannend, maar laten we een kijkje nemen op 607 00:32:30,000 --> 00:32:33,000 sommige van de dingen die we kunnen doen binnenkant van iOS. 608 00:32:33,000 --> 00:32:35,000 Deze nieuwe methode spel zal worden ontslagen 609 00:32:35,000 --> 00:32:37,000 wanneer ik op de nieuwe game te drukken. 610 00:32:37,000 --> 00:32:41,000 Aan te sluiten, dat op de voor mij overkomen naar mijn storyboard. 611 00:32:41,000 --> 00:32:43,000 Ik klikte op nieuw spel. 612 00:32:43,000 --> 00:32:47,000 Als ik hier aan het juiste ik kan zien dat 613 00:32:47,000 --> 00:32:50,000 Touch Up Binnen is aangesloten op de NewGame methode. 614 00:32:50,000 --> 00:32:53,000 Dat is de reden waarom dit is, word je ontslagen. 615 00:32:53,000 --> 00:32:56,000 De NewGame methode gaat een aantal set-up te doen. 616 00:32:56,000 --> 00:32:59,000 Het zal zeggen dat ik wil dat je de staat van het bord te verwijderen. 617 00:32:59,000 --> 00:33:01,000 Dit is een mooie methode op veranderlijk arrays. 618 00:33:01,000 --> 00:33:03,000 Dit gaat zeggen dat het nu X aan de beurt, 619 00:33:03,000 --> 00:33:07,000 en nu ga ik om te profiteren van deze viewWithTag ding. 620 00:33:07,000 --> 00:33:11,000 >> Ik weet dat mijn knoppen hebben de tags 1-9, 621 00:33:11,000 --> 00:33:13,000 en dat is iets wat ik willekeurig geplukt. 622 00:33:13,000 --> 00:33:15,000 Als ik de tekst van de knop ingesteld op leeg 623 00:33:15,000 --> 00:33:17,000 omdat ik net begonnen met een nieuw spel en ik wil geen 624 00:33:17,000 --> 00:33:20,000 Xs of O om over te laten dan ik dit kan doen. 625 00:33:20,000 --> 00:33:24,000 Ik kan zeggen ik wil het uitzicht met de tag, 1, 2, 3, 4 et cetera. 626 00:33:24,000 --> 00:33:27,000 Dit zal een andere knop te trekken elke keer. 627 00:33:27,000 --> 00:33:30,000 Hier ga ik te werpen UIButton. 628 00:33:30,000 --> 00:33:33,000 Net zoals we konden uitbrengen ints naar praalwagens en vice versa 629 00:33:33,000 --> 00:33:37,000 Dit zegt dat ik wil dit gegoten om een ​​UIButton. 630 00:33:37,000 --> 00:33:40,000 Dat betekent dat het van dit type zal een UIButton * zijn 631 00:33:40,000 --> 00:33:43,000 als gevolg van pointers, maar maak je geen zorgen, ze zijn niet eng meer. 632 00:33:43,000 --> 00:33:47,000 >> Zodra ik heb op deze knop ga ik een methode aan te roepen op. 633 00:33:47,000 --> 00:33:50,000 Deze methode heet setTitle forState, en dus is deze zegt 634 00:33:50,000 --> 00:33:53,000 Ik wil de tekst van de knop ingesteld op de lege tekenreeks zijn, 635 00:33:53,000 --> 00:33:57,000 en ik wil het aan de lege string als hij niet ingedrukt zijn. 636 00:33:57,000 --> 00:34:01,000 Als ik met behulp van deze methode, kan ik de tekst van de knop 637 00:34:01,000 --> 00:34:04,000 zodra iemand je slaat, maar we willen zeggen wanneer de knop net zit daar 638 00:34:04,000 --> 00:34:07,000 Ik wil de tekst leeg te zijn. 639 00:34:07,000 --> 00:34:10,000 Tot slot, we gaan mijn board te initialiseren, 640 00:34:10,000 --> 00:34:12,000 en ik ga om te zeggen dat alles op dit moment is op 0, 641 00:34:12,000 --> 00:34:15,000 dus dit bestuursleden onveranderlijk is een veranderlijk array, 642 00:34:15,000 --> 00:34:21,000 wat betekent dat ik kan bellen met de addObject methode en slechts een 0 binnenkant van het. 643 00:34:21,000 --> 00:34:23,000 Dat is wat er gebeurt als ik een nieuw spel. 644 00:34:23,000 --> 00:34:25,000 >> Laten we eens een kijkje nemen op een andere. 645 00:34:25,000 --> 00:34:28,000 Deze methode is hier de IBAction die gaat worden ingedrukt 646 00:34:28,000 --> 00:34:31,000 telkens een van die vlakken gedrukt. 647 00:34:31,000 --> 00:34:33,000 Nu hebben we een aantal Tic Tac Toe logica hier. 648 00:34:33,000 --> 00:34:36,000 We erachter te komen die aan de beurt is, 649 00:34:36,000 --> 00:34:39,000 en op basis van dat we ofwel een X of een O in te stellen, 650 00:34:39,000 --> 00:34:43,000 maar we merken dat we deze zelfde event handler te hergebruiken 651 00:34:43,000 --> 00:34:45,000 voor elk van deze knoppen. 652 00:34:45,000 --> 00:34:49,000 Dat betekent dat ik niet over een methode voor de knop linksboven, 653 00:34:49,000 --> 00:34:52,000 een andere methode voor de knop rechtsonder, hoewel ik zou kunnen hebben gedaan. 654 00:34:52,000 --> 00:34:54,000 Dat zou niet echt een goed ontwerp. 655 00:34:54,000 --> 00:34:57,000 Wat ik hier doe is dat ik eigenlijk aan de hand om vast te stellen 656 00:34:57,000 --> 00:35:00,000 wat de tag van de knop die is ingedrukt is. 657 00:35:00,000 --> 00:35:04,000 Je merkt dat dit spel methode een argument neemt. 658 00:35:04,000 --> 00:35:07,000 Het heet afzender, en wat afzender wordt afzender gaat 659 00:35:07,000 --> 00:35:10,000 vertegenwoordigen precies wat er actie op. 660 00:35:10,000 --> 00:35:15,000 Als ik op een knop drukt, wordt deze afzender plan te zijn dat UIButton 661 00:35:15,000 --> 00:35:18,000 dat ik eigenlijk gedrukt, dus dat betekent dat UIButton 662 00:35:18,000 --> 00:35:20,000 heeft een tag, omdat ik een tag. 663 00:35:20,000 --> 00:35:23,000 >> Als ik wil krijgen op de tag kan ik alleen maar zeggen 664 00:35:23,000 --> 00:35:26,000 Ik wil dat de tag van de afzender, 665 00:35:26,000 --> 00:35:28,000 en nogmaals, ik heb net gegoten naar een UIButton. 666 00:35:28,000 --> 00:35:32,000 Ik weet toevallig dat de afzender een UIButton zijn. 667 00:35:32,000 --> 00:35:34,000 Het is niet altijd een UIButton zijn. 668 00:35:34,000 --> 00:35:36,000 Ik kon bijvoorbeeld Registreer hetzelfde event handler 669 00:35:36,000 --> 00:35:38,000  voor een voor een knop, een voor een schuif. 670 00:35:38,000 --> 00:35:40,000 In dit geval, ik weet dat ze alle knoppen, dus ik ga zeggen 671 00:35:40,000 --> 00:35:43,000 Ik wil dat dit een knop te zijn, en dan kan ik de tag krijgen, 672 00:35:43,000 --> 00:35:48,000 en van de tag ik nu weet waar ik ben binnenkant van de raad van bestuur. 673 00:35:48,000 --> 00:35:51,000 Dan kan ik gewoon kiezen of u de X of de O, kan het de beurt spiegelen, 674 00:35:51,000 --> 00:35:54,000 controleren wie, et cetera gewonnen. 675 00:35:54,000 --> 00:35:59,000 >> Eventuele vragen over deze tot nu toe? 676 00:35:59,000 --> 00:36:02,000 Oke, de code die we online geplaatst: we willen niet te diep in 677 00:36:02,000 --> 00:36:06,000 van de Tic Tac Toe logica, maar nu kun je dat echt zien 678 00:36:06,000 --> 00:36:09,000 alles wat we doen is dat we een lus over deze array, 679 00:36:09,000 --> 00:36:13,000 dus we hebben een paar voor loops hier, en we zijn gewoon te vergelijken om te zien 680 00:36:13,000 --> 00:36:18,000 hebben we een wedstrijd in alle rijen, een wedstrijd in een kolom of iets dergelijks. 681 00:36:18,000 --> 00:36:21,000 Om daadwerkelijk uitvoeren van deze app, als ik tik op een van deze knoppen 682 00:36:21,000 --> 00:36:24,000 dat spel methode in brand werd gestoken, dus dat betekent dat ik gewoon te stellen 683 00:36:24,000 --> 00:36:31,000 de knop om een ​​X, dus nu deze knop zal een O, enzovoort, 684 00:36:31,000 --> 00:36:35,000 en dus dat is hoe we beginnen om te interageren met deze enkele pagina app. 685 00:36:35,000 --> 00:36:38,000 >> We zullen de code plaatsen, dus voel je vrij om die inzage, 686 00:36:38,000 --> 00:36:43,000 maar laten we nu praten over een aantal apps die meer dan slechts een pagina. 687 00:36:43,000 --> 00:36:47,000 Zo spannend als Tic Tac Toe was, een heleboel apps binnenkant van iOS 688 00:36:47,000 --> 00:36:50,000 zijn een soort van deze drill down dingen met meerdere schermen. 689 00:36:50,000 --> 00:36:54,000 Het eerste concept dat we moeten praten over zijn protocollen, 690 00:36:54,000 --> 00:36:57,000 en een protocol is gewoon een reeks methoden 691 00:36:57,000 --> 00:36:59,000 die u kunt beloven te definiëren. 692 00:36:59,000 --> 00:37:02,000 Als ik maken van dit nieuwe protocol met 2 methoden, deze eerste, 693 00:37:02,000 --> 00:37:05,000 als de return type is nietig, ik noemde het foo. 694 00:37:05,000 --> 00:37:07,000 Het heeft geen argumenten. Ik heb een andere methode. 695 00:37:07,000 --> 00:37:11,000 Het geeft een int. Ik noemde het blokkeren, en het duurt een argument. 696 00:37:11,000 --> 00:37:14,000 Dit alles protocol is dat is SomeProtocol heet hier op, 697 00:37:14,000 --> 00:37:19,000 Dit is een set van dingen die iemand kan implementeren. 698 00:37:19,000 --> 00:37:22,000 Ik heb niet de binnenkant van dit protocol gezegd wat foo doet. 699 00:37:22,000 --> 00:37:26,000 In plaats daarvan, ik ben gewoon zeggen dat je kon foo definiëren als u wilt. 700 00:37:26,000 --> 00:37:30,000 Als ik u een weergave-controller of het creëren van een klasse 701 00:37:30,000 --> 00:37:33,000 Ik kan de binnenkant van die klasse belofte uit te voeren 702 00:37:33,000 --> 00:37:40,000 Sommige van deze methoden, dus bijvoorbeeld als zeggen 703 00:37:40,000 --> 00:37:43,000 Dit zegt nu ben ik een belofte maken voor u dat binnen 704 00:37:43,000 --> 00:37:50,000 van deze visie controller class zal ik definities voor zowel foo en bar. 705 00:37:50,000 --> 00:37:52,000 >> Waarom is dat nuttig? 706 00:37:52,000 --> 00:37:55,000 Veel onderdelen in van iOS gebruik maken van deze 707 00:37:55,000 --> 00:37:58,000 ontwerp patroon genaamd delegatie, en wat delegatie zegt 708 00:37:58,000 --> 00:38:01,000 is dat, bijvoorbeeld, als ik een tekstvak 709 00:38:01,000 --> 00:38:04,000 en er zijn enkele gebeurtenissen die zouden kunnen worden geregistreerd binnenkant van mijn tekstvak, 710 00:38:04,000 --> 00:38:07,000 in plaats van het creëren van afzonderlijke gebeurtenissen wat ik kan doen is wat ik kan zeggen 711 00:38:07,000 --> 00:38:10,000 de afgevaardigde van dit tekstvak wordt een object zijn. 712 00:38:10,000 --> 00:38:13,000 Als ik zeg dat dit nu een afgevaardigde dat betekent dat 713 00:38:13,000 --> 00:38:16,000 wanneer een bepaalde gebeurtenis zou zijn ontslagen in het tekstvak 714 00:38:16,000 --> 00:38:18,000 in plaats van te moeten of iets dergelijks te registreren 715 00:38:18,000 --> 00:38:21,000 het is gewoon gaat om een ​​methode aan te roepen op de gemachtigde. 716 00:38:21,000 --> 00:38:24,000 Bijvoorbeeld, binnenkant van mijn tekstvak heb ik een methode voor wanneer ik op 717 00:38:24,000 --> 00:38:27,000 dat gebeurt knop in de rechter, 718 00:38:27,000 --> 00:38:30,000 en dus in plaats van het registreren van gebeurtenis-handler wat ik kan zeggen is 719 00:38:30,000 --> 00:38:34,000 tekstvak, hier is een object dat ik wil dat je een methode een beroep doen op 720 00:38:34,000 --> 00:38:37,000 elke keer dat iemand drukt op de knop Gereed, 721 00:38:37,000 --> 00:38:40,000 en dat betekent dat het object moet het uitvoeren van sommige protocol 722 00:38:40,000 --> 00:38:45,000 dat zegt dat ik beloof dat gedaan knop actie te definiëren, 723 00:38:45,000 --> 00:38:47,000 want als het niet definiëren die methode en je druk op Gereed, 724 00:38:47,000 --> 00:38:49,000 dan is het gaat worden verwarrend. 725 00:38:49,000 --> 00:38:55,000 >> Laten we eens een kijkje nemen op een voorbeeld. 726 00:38:55,000 --> 00:38:58,000 Hier heb ik gewoon nog een tekstvak, 727 00:38:58,000 --> 00:39:04,000 en een van de eigenschappen van dit tekstvak hier op deze rechterkant is de gemachtigde. 728 00:39:04,000 --> 00:39:06,000 Dit is een eigenschap van de klasse. 729 00:39:06,000 --> 00:39:09,000 Wat ik deed is hier ik controle klikte, en ik sleepte vanaf deze plek hier 730 00:39:09,000 --> 00:39:13,000 om de weergave-controller, en dat zegt nu de afgevaardigde van dit tekstvak 731 00:39:13,000 --> 00:39:18,000 gaat om de weergave-controller is. 732 00:39:18,000 --> 00:39:20,000 Dat wil zeggen dat een acties gebeuren, dan registreren 733 00:39:20,000 --> 00:39:25,000 aparte event handlers Ik wil dat je om ze te sturen aan de gemachtigde. 734 00:39:25,000 --> 00:39:28,000 Laten we nu eens een kijkje op mijn ogen controller. 735 00:39:28,000 --> 00:39:32,000 Binnenkant van de. H-bestand Ik heb een belofte gedaan. 736 00:39:32,000 --> 00:39:36,000 Ik heb beloofd om een ​​aantal methoden toe te passen binnenkant van dit protocol 737 00:39:36,000 --> 00:39:38,000 riep UITextFieldDelegate, en opnieuw, 738 00:39:38,000 --> 00:39:42,000 dit is gewoon een lijst met een aantal dingen die ik kan kiezen om uit te voeren. 739 00:39:42,000 --> 00:39:46,000 >> Als ik hier in mijn. M-bestand, heb ik geïmplementeerd een dergelijke methode. 740 00:39:46,000 --> 00:39:49,000 Ik heb noemde het textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 want dat is wat het werd genoemd binnenkant van het protocol. 742 00:39:52,000 --> 00:39:57,000 En nu wanneer ik op de knop Gereed binnenkant van dat tekstveld 743 00:39:57,000 --> 00:40:00,000 dit is wat er gaat gecalled, dus ik heb niet te registreren op het event handler. 744 00:40:00,000 --> 00:40:03,000 Ik heb de afgevaardigde, en wanneer deze gebeurtenis wordt ontslagen 745 00:40:03,000 --> 00:40:08,000 Dit is de methode die wordt gecalled, dus als ik hier kom naar mijn storyboard en voer het uit- 746 00:40:08,000 --> 00:40:11,000 terwijl dat is geladen kunnen we zien wat dit doet. 747 00:40:11,000 --> 00:40:13,000 Op mijn scherm heb ik 2 dingen. 748 00:40:13,000 --> 00:40:16,000 Ik heb dit tekstveld, en ik heb dit label. 749 00:40:16,000 --> 00:40:19,000 Ik ben gewoon te zeggen ik wil dat de tekst van dit label 750 00:40:19,000 --> 00:40:23,000 gelijk aan wat de gebruiker heeft ingevoerd in binnenkant van het tekstveld. 751 00:40:23,000 --> 00:40:26,000 Deze volgende regel hier is gewoon een methode die ik bel 752 00:40:26,000 --> 00:40:29,000 op het tekstveld dat zegt dat ik wil dat je het toetsenbord te verbergen. 753 00:40:29,000 --> 00:40:33,000 Dit is slechts de willekeurige methode die Apple heeft gekozen. 754 00:40:33,000 --> 00:40:38,000 >> Nogmaals, voordat ik deed wat ik moest alles bedraden, dus ik kwam voor het eerst hier. 755 00:40:38,000 --> 00:40:42,000 Vanuit het standpunt controller sleep ik naar het tekstvak. 756 00:40:42,000 --> 00:40:46,000 Ik liet gaan, en ik kan hier zien dat ik kan dit het tekstveld eigendom te maken 757 00:40:46,000 --> 00:40:49,000 omdat hier in het uitzicht controller die ik heb gedefinieerd een woning 758 00:40:49,000 --> 00:40:52,000 dat is een IBOutlet van een tekstveld. 759 00:40:52,000 --> 00:40:55,000 Deze zegt dat ik kan deze eigenschap bedraden 760 00:40:55,000 --> 00:40:59,000 aan een tekstveld in mijn UI. 761 00:40:59,000 --> 00:41:03,000 Nu als ik dit op kan ik beginnen met typen. 762 00:41:03,000 --> 00:41:06,000 Nu als ik klik op de knop Klaar dit gaat ontslaan 763 00:41:06,000 --> 00:41:08,000 een gebeurtenis die ik nu kan reageren. 764 00:41:08,000 --> 00:41:10,000 Geen event handlers. 765 00:41:10,000 --> 00:41:13,000 Dat is hoe ik gereageerd op deze knop Gereed. 766 00:41:13,000 --> 00:41:15,000 Logisch? 767 00:41:15,000 --> 00:41:20,000 >> Dit is niet een ontwerp patroon dat-je misschien niet ooit merkt dat je 768 00:41:20,000 --> 00:41:23,000 het maken van uw eigen protocol, maar weet gewoon dat sommige 769 00:41:23,000 --> 00:41:27,000 verschillende iOS componenten te registreren gebeurtenissen op verschillende manieren. 770 00:41:27,000 --> 00:41:29,000 Knoppen, bijvoorbeeld, gebruik deze IBActions. 771 00:41:29,000 --> 00:41:32,000 Tekstvelden, daarentegen, gaat personen gebruiken. 772 00:41:32,000 --> 00:41:36,000 We kunnen zien en je kunt kijken dat alles tot de binnenkant van de documentatie. 773 00:41:36,000 --> 00:41:41,000 By the way, is er eigenlijk een ton van de UI dingen ingebouwd in iOS voor u, 774 00:41:41,000 --> 00:41:46,000 dus bijvoorbeeld, de manier waarop ik maakte dat zeggen gedaan aan de onderkant rechts 775 00:41:46,000 --> 00:41:48,000 is Ik kan dit tekstveld. 776 00:41:48,000 --> 00:41:50,000 Ik kwam hier. 777 00:41:50,000 --> 00:41:53,000 Ik gescrold een beetje de belangrijkste terug te keren, 778 00:41:53,000 --> 00:41:56,000 en ik kan eigenlijk maken dit een hele hoop dingen, zoals als ik wil dat zeggen 779 00:41:56,000 --> 00:42:00,000 noodoproep plaats ik dat kan doen, dat is volstrekt willekeurig, 780 00:42:00,000 --> 00:42:02,000 en ik weet niet waarom er een ingebouwde alarmtoets te drukken, 781 00:42:02,000 --> 00:42:06,000 maar daar, er staat noodoproep in heel kleine letters. 782 00:42:06,000 --> 00:42:08,000 Daar ga je. 783 00:42:08,000 --> 00:42:12,000 >> Zeker verkennen al deze verschillende opties in iOS. 784 00:42:12,000 --> 00:42:14,000 Hebt u vragen over gedelegeerden? 785 00:42:14,000 --> 00:42:18,000 Nogmaals, alleen een interessant ontwerp patroon dat u moet zich bewust zijn van. 786 00:42:18,000 --> 00:42:22,000 Oke, laten we vervolgens een kijkje op tafel uitzicht op te nemen. 787 00:42:22,000 --> 00:42:26,000 Een tabelweergave is in feite de lijst met items die overal in iOS. 788 00:42:26,000 --> 00:42:29,000 Als je bladert door al uw contacten, bent u op zoek naar 789 00:42:29,000 --> 00:42:34,000 de instelling pagina, en dat soort lijst van dingen wordt een tabelweergave. 790 00:42:34,000 --> 00:42:37,000 Het implementeren van een tabelweergave in iOS is vrij eenvoudig. 791 00:42:37,000 --> 00:42:41,000 In plaats van het maken van een klasse die stamt uit die UIViewController 792 00:42:41,000 --> 00:42:44,000 zoals we hebben gedaan voordat we moeten gewoon om te zeggen in plaats van 793 00:42:44,000 --> 00:42:46,000 alles wat een UIViewController doet wat ik wil doen, 794 00:42:46,000 --> 00:42:50,000 Ik zeg alles wat een UITableViewController doet wat ik wil doen, 795 00:42:50,000 --> 00:42:54,000 zodat voegt gewoon wat extra dingen die helemaal klaar zijn voor ons. 796 00:42:54,000 --> 00:42:58,000 We moeten heel weinig om in principe Vul in binnenkant van de tafel doen. 797 00:42:58,000 --> 00:43:02,000 >> Om een ​​tabel Ik moet een aantal vragen te beantwoorden geven. 798 00:43:02,000 --> 00:43:06,000 De eerste vraag die ik moet beantwoorden is hoeveel secties in de tabel? 799 00:43:06,000 --> 00:43:08,000 Wanneer u bladert door uw contacten app zul je merken dat het is een soort van 800 00:43:08,000 --> 00:43:12,000 georganiseerd door de As, dan heb je de B's, en je hebt dat kleine sub-header. 801 00:43:12,000 --> 00:43:14,000 Elk van deze wordt een sectie. 802 00:43:14,000 --> 00:43:16,000 Je kan wel of deze niet nodig. 803 00:43:16,000 --> 00:43:19,000 Het eerste wat je hoeft te doen is implementatie van een methode 804 00:43:19,000 --> 00:43:22,000 riep TableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Dat geeft alleen maar aan hoeveel secties je hebt, 806 00:43:25,000 --> 00:43:29,000 dus dit zou kunnen zeggen een keer terug als je er een grote tafel uitzicht. 807 00:43:29,000 --> 00:43:33,000 De volgende vraag die iOS moet weten is hoeveel rijen hebt u? 808 00:43:33,000 --> 00:43:36,000 Bijvoorbeeld, je bladert door een tabelweergave. 809 00:43:36,000 --> 00:43:39,000 Je hebt een vast aantal nummers die u zoekt op of een vast aantal contacten. 810 00:43:39,000 --> 00:43:41,000 Als je mij natuurlijk niet zoveel, 811 00:43:41,000 --> 00:43:44,000 en dus dat is hoe iOS weet hoeveel cellen weer te geven. 812 00:43:44,000 --> 00:43:46,000 >> Nogmaals, kan dit iets zeggen als terug 3. 813 00:43:46,000 --> 00:43:49,000 Mijn tabelweergave heeft 3 rijen. 814 00:43:49,000 --> 00:43:52,000 Tot slot, iOS moet weten wat elke cel eruit ziet, 815 00:43:52,000 --> 00:43:54,000 dus wat het is eigenlijk aan de hand te doen is bellen deze methode hier beneden, 816 00:43:54,000 --> 00:43:57,000 deze TableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Het gaat om deze methode aan te roepen op elke cel binnenkant van uw tafel. 818 00:44:01,000 --> 00:44:03,000 Hoe werkt het weten hoe vaak het ook noemen? 819 00:44:03,000 --> 00:44:06,000 Nou, je verteld dat de binnenkant van het aantal rijen in paragraaf. 820 00:44:06,000 --> 00:44:08,000 We gaan dit doen op elk van onze cellen, 821 00:44:08,000 --> 00:44:11,000 en de binnenkant van dit is waar je kunt eigenlijk doen dingen zoals 822 00:44:11,000 --> 00:44:16,000 stelt u de tekst of vertellen wat dat kleine blauwe knop aan de rechterkant doet. 823 00:44:16,000 --> 00:44:19,000 Het patroon voor het krijgen van deze cellen, gaan we deze methode te gebruiken 824 00:44:19,000 --> 00:44:22,000 genoemd dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C is eigenlijk heel bekend om de belachelijke lengte van hun methode namen, 826 00:44:29,000 --> 00:44:32,000 en dit is echt een mooi voorbeeld van voorbeeld. 827 00:44:32,000 --> 00:44:37,000 Wat deze methode doet is dit gewoon zegt dat ik wil dat je me een cel. 828 00:44:37,000 --> 00:44:39,000 Gewoon een iOS-ding. 829 00:44:39,000 --> 00:44:41,000 Als je iets als 100.000 nummers op je iPod 830 00:44:41,000 --> 00:44:45,000 wat iOS niet wilt doen, is toe te wijzen 100.000 cellen, 831 00:44:45,000 --> 00:44:48,000 want als je aan de top van de lijst, heb je echt nodig om geheugen toe te wijzen 832 00:44:48,000 --> 00:44:51,000 voor de cel dat is 99.000 rijen naar beneden? 833 00:44:51,000 --> 00:44:55,000 Nee, want als je scrolt kun je soort van toe te wijzen als je verder gaat. 834 00:44:55,000 --> 00:44:57,000 Dit wordt voor u gedaan. 835 00:44:57,000 --> 00:44:59,000 U hoeft geen zorgen te maken over al die stomme prestaties spul. 836 00:44:59,000 --> 00:45:02,000 Alles wat je zegt is u deze methode aanroept dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 en dit zegt, oke, als je nodig hebt om Ik ga een nieuwe cel voor u maakt. 838 00:45:06,000 --> 00:45:09,000 >> Maar als je aan de onderkant van de tafel en je hebt reeds toegewezen sommige cellen 839 00:45:09,000 --> 00:45:12,000 aan de bovenkant van de tabel die je echt niet van plan om op elk moment snel nodig 840 00:45:12,000 --> 00:45:15,000 Ik ga u een van die rug in plaats van de toewijzing van een nieuwe, 841 00:45:15,000 --> 00:45:17,000 en dus dit is een mooie prestatie van zorg. 842 00:45:17,000 --> 00:45:21,000 Je hoeft niet toe te kennen de cellen zelf. 843 00:45:21,000 --> 00:45:23,000 Dat zal u terug te geven een cel. 844 00:45:23,000 --> 00:45:25,000 Het zal bij u terug een cel object. 845 00:45:25,000 --> 00:45:28,000 Zodra u de cel object kunt u dingen doen om het te. 846 00:45:28,000 --> 00:45:32,000 U kunt de tekst van de cel met deze eigenschap heet tekstlabel. 847 00:45:32,000 --> 00:45:36,000 U kunt de pijl aan de rechterkant of een andere random stuff 848 00:45:36,000 --> 00:45:41,000 deze andere eigenschap die accessoryType, enzovoort, enzovoort. 849 00:45:41,000 --> 00:45:46,000 >> Laten we eens een kijkje nemen op het daadwerkelijk implementeren van een tabelweergave nu. 850 00:45:46,000 --> 00:45:49,000 Toen ik gemaakt dit project 851 00:45:49,000 --> 00:45:53,000 in plaats van te zeggen enkele weergave applicatie die ik kwam eigenlijk hier 852 00:45:53,000 --> 00:45:57,000 naar master-detail toepassing, en dus in principe komt dit overeen met de e-mail app 853 00:45:57,000 --> 00:46:01,000 op de iPad met de tabelweergave aan de linkerkant en vervolgens de inhoud aan de rechterkant. 854 00:46:01,000 --> 00:46:07,000 Op de iPod of iPhone dit gaat overeenkomen met een enkele tabelweergave. 855 00:46:07,000 --> 00:46:10,000 Dat is waar ik mijn starter code. 856 00:46:10,000 --> 00:46:13,000 >> Laten we eerst een blik op het storyboard te nemen. 857 00:46:13,000 --> 00:46:15,000 Dit alles werd gedaan voor mij, in principe gemaakt. 858 00:46:15,000 --> 00:46:18,000 Deze navigatiebalk liet me zien wat een voorbeeld cel eruit zou kunnen zien, 859 00:46:18,000 --> 00:46:22,000 en ik kan dubbelklik hierop klikt, verandert de titel. 860 00:46:22,000 --> 00:46:25,000 Elke andere UI zorgen die ik aankan daar. 861 00:46:25,000 --> 00:46:27,000 De header-bestand ziet er echt simpel. 862 00:46:27,000 --> 00:46:30,000 In plaats van dit te zeggen is UIViewController we nu zeggen dat dit een 863 00:46:30,000 --> 00:46:35,000 TableViewController, dus we weten dat we willen al die tabel methoden noemen. 864 00:46:35,000 --> 00:46:38,000 Daarna ga ik weer een eigenschap die gaat vertegenwoordigen creëren 865 00:46:38,000 --> 00:46:40,000 de dingen binnenkant van mijn tafel. 866 00:46:40,000 --> 00:46:43,000 Deze tabel gaat willekeurig weer te geven 867 00:46:43,000 --> 00:46:46,000 een lijst van de vrucht, en dus moet ik een aantal array te maken 868 00:46:46,000 --> 00:46:49,000 waarin ik kan invoegen fruit. 869 00:46:49,000 --> 00:46:52,000 Binnenkant van mijn uitvoering bestand is het eerste wat ik wil doen 870 00:46:52,000 --> 00:46:55,000 is wil ik ervoor zorgen dat ik initialiseren deze array. 871 00:46:55,000 --> 00:46:58,000 >> Ik zei Alloc init, creëerde ik mijn fruit array, 872 00:46:58,000 --> 00:47:03,000 en ik ben het toevoegen van 4 dingen aan, waarvan er een is veel meer omstreden dan de andere 3. 873 00:47:03,000 --> 00:47:06,000 En nu heb ik een array van grootte 4. 874 00:47:06,000 --> 00:47:08,000 We schudden het op in CS50. 875 00:47:08,000 --> 00:47:11,000 Ik heb nu een array van grootte 4. 876 00:47:11,000 --> 00:47:13,000 Nu ga ik om te beginnen met het beantwoorden van deze vragen, en eigenlijk, 877 00:47:13,000 --> 00:47:16,000 Toen ik deze app gemaakt van dit alles was al voor mij gedaan. 878 00:47:16,000 --> 00:47:19,000 Ik hoefde niet te typen het aantal secties in tabelweergave. 879 00:47:19,000 --> 00:47:22,000 Het was er al, en ik ben invuloefeningen. 880 00:47:22,000 --> 00:47:24,000 Hoeveel luiken heb ik? 881 00:47:24,000 --> 00:47:26,000 One. Helemaal klaar. 882 00:47:26,000 --> 00:47:28,000 Hoeveel rijen heb ik? 883 00:47:28,000 --> 00:47:31,000 Nou, ik een rij voor elke vrucht, dus deze telling 884 00:47:31,000 --> 00:47:34,000 is een eigenschap van een array die zegt hoe groot is het? 885 00:47:34,000 --> 00:47:36,000 Dat is hoeveel rijen ik heb. 886 00:47:36,000 --> 00:47:42,000 Tot slot, ik moet zeggen wat doet elke cel eruit? 887 00:47:42,000 --> 00:47:46,000 Ik ga dequeueReusableCellWithIdentifier zeggen. 888 00:47:46,000 --> 00:47:48,000 >> Opnieuw werd dit al voor mij geschreven. 889 00:47:48,000 --> 00:47:51,000 Ik hoefde niet te doen dit zelf, en ik wil terug 890 00:47:51,000 --> 00:47:54,000 deze cel op deze locatie. 891 00:47:54,000 --> 00:47:57,000 Vergeet niet dat we dezelfde methode een beroep op elke cel, 892 00:47:57,000 --> 00:48:01,000 en dit argument hier, dit indexPath argument, 893 00:48:01,000 --> 00:48:03,000 zegt wat rij ik ben binnen 894 00:48:03,000 --> 00:48:05,000 Als ik zeg indexPath.row hier beneden 895 00:48:05,000 --> 00:48:09,000 dit aan 0, dan zal 1 dan een 2, en dit is zo ik weet 896 00:48:09,000 --> 00:48:11,000 welke cel ik momenteel weergegeven. 897 00:48:11,000 --> 00:48:15,000 Ik wil de tekst van de cel met behulp van deze TextLabel eigenschap in te stellen 898 00:48:15,000 --> 00:48:19,000 om te gaan in mijn fruit array en krijgen 899 00:48:19,000 --> 00:48:21,000 het object overeenkomstig elke rij. 900 00:48:21,000 --> 00:48:24,000 Als dit een string, ik ben nu het instellen van 901 00:48:24,000 --> 00:48:28,000 de eigenschap text naar een string. 902 00:48:28,000 --> 00:48:30,000 Ik kan een ander ding. 903 00:48:30,000 --> 00:48:32,000 Ik kan ook registreren op het event handler op elk van de cellen, 904 00:48:32,000 --> 00:48:35,000 dus als ik tik op elk van deze cellen 905 00:48:35,000 --> 00:48:39,000 deze didSelectRowAtIndexPath, dit gaat te noemen voor mij, 906 00:48:39,000 --> 00:48:42,000 dus gewoon door het definiëren van deze Ik kan nu overweg met wat er gebeurt 907 00:48:42,000 --> 00:48:46,000 wanneer u een cel tikt, weer en, we passeren in welke cel werd afgeluisterd 908 00:48:46,000 --> 00:48:50,000 zodat we kunnen hergebruiken deze zelfde event handler voor al onze cellen. 909 00:48:50,000 --> 00:48:53,000 >> Nogmaals, dit is iets wat iOS doet voor mij. 910 00:48:53,000 --> 00:48:55,000 Laten we weer een andere vervelende popup 911 00:48:55,000 --> 00:48:59,000 dat zegt je gewoon opgepakt iets waar dat er iets 912 00:48:59,000 --> 00:49:04,000 zal de rij object. 913 00:49:04,000 --> 00:49:10,000 Toen ik dit run, ga ik deze mooie tafel uitzicht heeft 914 00:49:10,000 --> 00:49:14,000 met een rij voor elk van deze vruchten, en als ik tik op een 915 00:49:14,000 --> 00:49:16,000 hij vertelt me ​​wat er gebeurd is. 916 00:49:16,000 --> 00:49:21,000 Logisch? 917 00:49:21,000 --> 00:49:24,000 Laten we bouwen aan een beetje meer complex van een app, 918 00:49:24,000 --> 00:49:28,000 zo veel als het klikken je geplukt tomaat is. 919 00:49:28,000 --> 00:49:31,000 Het leuke deel over de storyboards 920 00:49:31,000 --> 00:49:35,000 is het niet alleen gaat om individueel te helpen ons ontwerp-schermen, 921 00:49:35,000 --> 00:49:38,000 het is ook gaan om ons te helpen met elkaar in verband onze hele app, 922 00:49:38,000 --> 00:49:42,000 zodat de uiteindelijke app we zullen gebouw is dit leuke sport nieuws lezer, 923 00:49:42,000 --> 00:49:45,000 en dus het gaat om meerdere schermen hebben, en dus kan ik eigenlijk vertegenwoordigen 924 00:49:45,000 --> 00:49:48,000 elk van deze meerdere schermen op het storyboard, 925 00:49:48,000 --> 00:49:52,000 en ik kan uitzoomen en zie mijn app van een hoog niveau. 926 00:49:52,000 --> 00:49:55,000 >> Om een ​​nieuw element binnenkant van mijn storyboard creëren 927 00:49:55,000 --> 00:49:59,000 het is echt simpel binnenkant van Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Als ik wil naar een ander scherm toe te voegen, bijvoorbeeld, 929 00:50:01,000 --> 00:50:06,000 Ik kan eerst uit te zoomen met de pinch zoom dat Apple houdt zo veel, 930 00:50:06,000 --> 00:50:09,000 en hier beneden voordat ik zoeken naar een knop 931 00:50:09,000 --> 00:50:12,000 en ik sleep een knop 932 00:50:12,000 --> 00:50:15,000 als ik wil een nieuw scherm te creëren kan ik eigenlijk gewoon slepen en neerzetten 933 00:50:15,000 --> 00:50:19,000 een hele uitzicht controller, dus als ik dit pak, trek hem over hier, 934 00:50:19,000 --> 00:50:23,000 hey, er is een ander scherm, en dus nu met behulp van deze zelfde storyboard bestand 935 00:50:23,000 --> 00:50:26,000 Ik kan alle van de schermen binnenkant van mijn app, en ik kan uitzoomen 936 00:50:26,000 --> 00:50:28,000 en zie hoe ze op elkaar inwerken. 937 00:50:28,000 --> 00:50:32,000 Deze zullen nog niet met elkaar omgaan. 938 00:50:32,000 --> 00:50:36,000 De manier waarop deze 2 schermen interactie is die u definieert relaties. 939 00:50:36,000 --> 00:50:39,000 U kunt in principe zeggen dat dit scherm wanneer u op deze knop drukt, 940 00:50:39,000 --> 00:50:42,000 Ik wil dat je meer dan schuiven om deze nieuwe scherm. 941 00:50:42,000 --> 00:50:44,000 Dat betekent dat er dit soort relatie tussen de 942 00:50:44,000 --> 00:50:46,000  het eerste scherm en het tweede scherm. 943 00:50:46,000 --> 00:50:49,000 Je zult in principe een pijl van die knop naar het tweede scherm 944 00:50:49,000 --> 00:50:53,000 zeggen dat wanneer u op deze knop drukt, dat is waar ik heen wil. 945 00:50:53,000 --> 00:50:57,000 Net zoals we de controle geklikt en gesleept naar de verkooppunten te definiëren 946 00:50:57,000 --> 00:51:01,000 we gaan om hetzelfde te doen om deze segues definiëren. 947 00:51:01,000 --> 00:51:05,000 >> We zullen zien een voorbeeld voor die, en voordat we daadwerkelijk de overgang 948 00:51:05,000 --> 00:51:08,000 van het ene scherm naar het andere iOS is leuk genoeg om deze methode aan te roepen 949 00:51:08,000 --> 00:51:11,000 riep prepareForSegue, en dit is waar we beginnen kunnen 950 00:51:11,000 --> 00:51:14,000 het verzenden van gegevens van het ene programma naar het andere. 951 00:51:14,000 --> 00:51:17,000 In het voorbeeld dat we gaan kijken zal in principe ons in staat stellen 952 00:51:17,000 --> 00:51:20,000 om honkbal teams filteren op competities en divisies. 953 00:51:20,000 --> 00:51:23,000 Toen ik een competitie selecteren, bijvoorbeeld, ik wil de overgang 954 00:51:23,000 --> 00:51:25,000 naar mijn volgende scherm waar ik kan alle van de divisies 955 00:51:25,000 --> 00:51:27,000 in die competitie of de verschillende teams. 956 00:51:27,000 --> 00:51:31,000 Ik moet naar dat scherm wat teams je moet geven. 957 00:51:31,000 --> 00:51:35,000 Om dat te doen ga ik hier om te profiteren van deze methode. 958 00:51:35,000 --> 00:51:39,000 >> Tot slot, op slechts een willekeurig punt op iOS. 959 00:51:39,000 --> 00:51:41,000 Als u gegevens wilt opslaan is er dit ding heet kerngegevens, 960 00:51:41,000 --> 00:51:44,000 dat is eigenlijk wel ingewikkeld om mee te werken. 961 00:51:44,000 --> 00:51:47,000 U kunt ook gebruik maken van SQL om gegevens op te slaan, 962 00:51:47,000 --> 00:51:51,000 die weer, is leuk, maar soort van op de meer ingewikkelde kant om mee te werken, 963 00:51:51,000 --> 00:51:55,000 maar iOS ondersteunt ook deze echt coole dingen geroepen eigendom lijsten, 964 00:51:55,000 --> 00:52:00,000 en een property list is gewoon een bestand dat de belangrijkste waarde-paren vertegenwoordigt. 965 00:52:00,000 --> 00:52:03,000 U definieert een lijst met toetsen, en je zegt deze toets gaat een array zijn. 966 00:52:03,000 --> 00:52:06,000 Deze toets wordt een string zijn, en eigenlijk alles wat je kunt doen 967 00:52:06,000 --> 00:52:10,000 in JSON kunt u binnen doen van een property list, 968 00:52:10,000 --> 00:52:14,000 en dus dit is echt mooi stelt ons in staat om te werken met een aantal gegevens. 969 00:52:14,000 --> 00:52:18,000 Bijvoorbeeld, ik heb dit Teams.plist die ik heb gemaakt. 970 00:52:18,000 --> 00:52:22,000 Ik heb een nieuwe plist-bestand, en ik kan doorklikken. 971 00:52:22,000 --> 00:52:26,000 Dit is een woordenboek is een woordenboek zijn strings, 972 00:52:26,000 --> 00:52:30,000 en dus dit is een mooie grafische weergave van een JSON-document 973 00:52:30,000 --> 00:52:33,000 of gewoon een aantal belangrijke waarde-paren, 974 00:52:33,000 --> 00:52:37,000 en dus dit is de gegevens die ik ga werken met binnenkant van mijn app. 975 00:52:37,000 --> 00:52:40,000 >> Laten we eerst hierheen komen. We hebben veel meer bestanden nu. 976 00:52:40,000 --> 00:52:44,000 Maar laten we hier voor het eerst komen naar het storyboard. 977 00:52:44,000 --> 00:52:48,000 Het storyboard hier-als ik kan uitzoomen- 978 00:52:48,000 --> 00:52:51,000 we kunnen nu zien dat dit de stroom van mijn app. 979 00:52:51,000 --> 00:52:53,000 Ik ben eerst gaan beginnen op dit scherm. 980 00:52:53,000 --> 00:52:55,000 Ik ga inzoomen op dit scherm, 981 00:52:55,000 --> 00:52:58,000 en ik ga inzoomen op dit scherm, en we kunnen hier zien dat als ik soort van 982 00:52:58,000 --> 00:53:04,000 verplaatsen van een van deze rond hebben we deze pijlen te gaan van hier naar hier, 983 00:53:04,000 --> 00:53:08,000 en de manier waarop ik te definiëren die pijl was als ik in te zoomen een beetje, 984 00:53:08,000 --> 00:53:12,000 en als ik kom naar deze visie controller, 985 00:53:12,000 --> 00:53:16,000 en hier is een cel, en ik wil dat zeggen wanneer u op een cel 986 00:53:16,000 --> 00:53:18,000 Ik wil dat je meer dan glijden naar een ander scherm. 987 00:53:18,000 --> 00:53:21,000 Ik kan gewoon houd controle, 988 00:53:21,000 --> 00:53:26,000 scrollen over een beetje, houd controle, sleep deze cel over en loslaten. 989 00:53:26,000 --> 00:53:30,000 >> En hier zeggen we wat is de overgang die u wilt gebruiken? 990 00:53:30,000 --> 00:53:32,000 Wilt u die dia ding dat heet push gebruiken? 991 00:53:32,000 --> 00:53:34,000 Wilt u naar boven voelt vanaf de onderkant? 992 00:53:34,000 --> 00:53:36,000 Dat heet modale. 993 00:53:36,000 --> 00:53:40,000 En toen ik eenmaal op een van deze, het gaat om deze pijl te trekken voor mij, 994 00:53:40,000 --> 00:53:44,000 en dat betekent dat ik eigenlijk heb behandeld wat er gebeurt als ik op deze knop grafisch. 995 00:53:44,000 --> 00:53:48,000 Ik schreef niet een code om daadwerkelijk schuiven van het ene scherm naar het volgende. 996 00:53:48,000 --> 00:53:51,000 Definieerde ik dit visueel binnenkant van Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Als ik klik op deze pijl, kunnen we zien dat gaf ik dit ding een naam. 998 00:53:55,000 --> 00:53:59,000 Ik noemde het showDivisions, en dit is zo dat ik weet kan 999 00:53:59,000 --> 00:54:03,000 wat de overgang staat te gebeuren, en we zullen zien waarom in slechts een seconde. 1000 00:54:03,000 --> 00:54:06,000 Dat is hoe ik heb bedraad de verschillende schermen in mijn app. 1001 00:54:06,000 --> 00:54:09,000 Als dit een toets, bijvoorbeeld in plaats van een tabelweergave 1002 00:54:09,000 --> 00:54:11,000 Ik kon beheersen klik op de knop, sleept u over naar het volgende scherm, 1003 00:54:11,000 --> 00:54:16,000 en dat is hoe ik kan doen navigatie op die manier. 1004 00:54:16,000 --> 00:54:19,000 >> Heel snel, als we komen in de MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 weer, we gewoon naar een lijst van dingen te definiëren 1006 00:54:22,000 --> 00:54:26,000 die wordt weergegeven in de tabelweergave. 1007 00:54:26,000 --> 00:54:29,000 Hier Ik zeg dat ik wil dat je dat plist-bestand te nemen, 1008 00:54:29,000 --> 00:54:32,000 en ik wil dat je om het te laden op in een woordenboek, 1009 00:54:32,000 --> 00:54:35,000 en als je eenmaal dat woordenboek hebt, ga ik opnieuw te beantwoorden dezelfde vragen. 1010 00:54:35,000 --> 00:54:37,000 Hier is het aantal secties. 1011 00:54:37,000 --> 00:54:41,000 Een, er is een rij voor elke competitie, en de tekst van elke cel 1012 00:54:41,000 --> 00:54:46,000 moet ofwel de eerste, de eerste competitie, de tweede liga, en ga zo maar door. 1013 00:54:46,000 --> 00:54:51,000 Tot slot, ik ga deze methode die we net zagen genoemd prepareForSegue te gebruiken, 1014 00:54:51,000 --> 00:54:54,000 en dit is de methode die zal worden ontslagen als ik klik 1015 00:54:54,000 --> 00:54:57,000 een van deze rijen en derhalve activeren die overgang 1016 00:54:57,000 --> 00:54:59,000 dat ik opgezet met de pijlen. 1017 00:54:59,000 --> 00:55:02,000 Dit is te zeggen dat ik kan meerdere heb 1018 00:55:02,000 --> 00:55:05,000 relaties van het ene scherm naar het andere. 1019 00:55:05,000 --> 00:55:08,000 Als ik 2 knoppen en elke knop brengt u naar een ander scherm 1020 00:55:08,000 --> 00:55:10,000 Ik ga naar 2 segues, 1 hebben voor elke knop. 1021 00:55:10,000 --> 00:55:14,000 Maar prepareForSegue is opnieuw zullen worden hergebruikt 1022 00:55:14,000 --> 00:55:17,000 voor elk van de verschillende relaties, dat betekent dat ik een manier moet 1023 00:55:17,000 --> 00:55:21,000 van het identificeren als u op de eerste knop of druk op de tweede knop. 1024 00:55:21,000 --> 00:55:25,000 >> Weet je nog dat ik gaf dat segue een naam, deze showDivisions, 1025 00:55:25,000 --> 00:55:29,000 dat is hoe ik nu weet dat dit de segue die werd geactiveerd. 1026 00:55:29,000 --> 00:55:32,000 Het enige wat ik wil doen is dat ik wil zeggen 1027 00:55:32,000 --> 00:55:35,000 Ik wil uitzoeken wat ik gewoon op, 1028 00:55:35,000 --> 00:55:38,000 en zo om dat te krijgen, kan ik zeggen dat ik wil dat de indexPath voor de geselecteerde rij, 1029 00:55:38,000 --> 00:55:42,000 herinner me de indexPath zegt precies waar ik net geklikt, 1030 00:55:42,000 --> 00:55:47,000 en dan wil ik zeggen dat ik wil uitzoeken waar ik heen ga. 1031 00:55:47,000 --> 00:55:50,000 Dit destinationViewController, dat is een eigenschap van de segue. 1032 00:55:50,000 --> 00:55:53,000 Dat is het scherm ga ik, 1033 00:55:53,000 --> 00:55:56,000 dus ik weet dat het scherm ga ik heet DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 omdat ik geschapen die klasse, 1035 00:55:59,000 --> 00:56:02,000 en dus nu als ik zeg d.divisions 1036 00:56:02,000 --> 00:56:06,000 Ik ben nu het instellen van een eigenschap van het uitzicht controller Ik sta op het punt om te gaan. 1037 00:56:06,000 --> 00:56:10,000 Dit is hoe ik het verzenden van gegevens van het ene scherm naar het andere scherm. 1038 00:56:10,000 --> 00:56:13,000 >> Gewoon kijken naar dit DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 kun je hier zien dat in de. h-bestand 1040 00:56:16,000 --> 00:56:20,000 Er is die eigenschap verdeeldheid, en dat is wat ik eigenlijk ben vullen, 1041 00:56:20,000 --> 00:56:25,000 dus dat is hoe ik weet dat ik de divisies die overeenkomt met het weergeven van 1042 00:56:25,000 --> 00:56:28,000 de competitie die ik geklikt, weer in en, 1043 00:56:28,000 --> 00:56:31,000 de werkelijke tabelweergave ziet er vrijwel hetzelfde, alleen het beantwoorden van die 1044 00:56:31,000 --> 00:56:34,000 3 eenvoudige vragen en het identificeren van 1045 00:56:34,000 --> 00:56:37,000 wat er gebeurt als je naar het volgende scherm. 1046 00:56:37,000 --> 00:56:40,000 Gewoon een paar andere dingen hier. 1047 00:56:40,000 --> 00:56:43,000 Je merkt aan de top hier dat in plaats van te zeggen # include 1048 00:56:43,000 --> 00:56:45,000 Ik ben nu zeg # importeren. 1049 00:56:45,000 --> 00:56:47,000 Dit is slechts een Objective-C ding. 1050 00:56:47,000 --> 00:56:52,000 De import is eigenlijk een mooier versie van omvatten, 1051 00:56:52,000 --> 00:56:57,000 en bijvoorbeeld, moeten we weten wat deze klasse is, 1052 00:56:57,000 --> 00:57:00,000 dus ik kan niet zomaar zeggen DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Als we niet hashtag standardio.c binnenkant van ons. C bestand 1054 00:57:05,000 --> 00:57:07,000 de compiler had geen idee wat printf was. 1055 00:57:07,000 --> 00:57:12,000 Ook als ik niet importeren DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 de compiler heeft echt geen idee wat een DivisionsViewController is. 1057 00:57:16,000 --> 00:57:19,000 Zorg ervoor dat de binnenkant van uw verschillende. M. bestanden die u er zeker van te importeren 1058 00:57:19,000 --> 00:57:25,000 de bijbehorende. h-bestanden, zodat de compiler weet wat er gaande is. 1059 00:57:25,000 --> 00:57:31,000 >> Tot slot, wat Apple doet uiteindelijk weer een aantal gegevens met behulp van een web-uitzicht, 1060 00:57:31,000 --> 00:57:35,000 en dus een web-view is een object waarin je kunt insluiten 1061 00:57:35,000 --> 00:57:37,000 een beetje webbrowser binnenkant van uw app. 1062 00:57:37,000 --> 00:57:40,000 Het enige wat u hoeft te doen is te voorzien van een URL naar uw webbrowser, 1063 00:57:40,000 --> 00:57:43,000 dus ik wil naar mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 en dit is hoe ik kan de home pagina te gaan voor elk team, 1065 00:57:46,000 --> 00:57:49,000 en zo door het passeren in deze URL 1066 00:57:49,000 --> 00:57:52,000 het web weergave kan dit voor mij, en ik kan rond bladeren, 1067 00:57:52,000 --> 00:58:01,000 en simulator in gebruik is door die ene. 1068 00:58:01,000 --> 00:58:03,000 Nu dit kwam van mijn plist. 1069 00:58:03,000 --> 00:58:07,000 Als ik klik op deze dit kwam ook van mijn plist, en dit sliding werd behandeld 1070 00:58:07,000 --> 00:58:09,000 door het definiëren van die segues. 1071 00:58:09,000 --> 00:58:12,000 Ik klik op deze en nog een, 1072 00:58:12,000 --> 00:58:15,000 en nu hier is mijn UIWebView, dus net als dat 1073 00:58:15,000 --> 00:58:19,000 hier is de website voor de URL die ik net ingebed, 1074 00:58:19,000 --> 00:58:21,000 en ik heb niets te gek af te handelen. 1075 00:58:21,000 --> 00:58:24,000 Dit is hoe om te laten zien van een webpagina. 1076 00:58:24,000 --> 00:58:27,000 Dingen zoals deze terug-knop hier worden ook gegeven voor mij 1077 00:58:27,000 --> 00:58:33,000 helemaal gratis, want ik heb gedefinieerd met behulp van deze relaties segues. 1078 00:58:33,000 --> 00:58:37,000 >> Nog vragen? Ja. 1079 00:58:37,000 --> 00:58:40,000 [Student] Dus als je Alloc gebruiken, hoef je nooit om gratis iets? 1080 00:58:40,000 --> 00:58:43,000 Precies, wanneer u belt Alloc en init je hoeft niet te bevrijden. 1081 00:58:43,000 --> 00:58:46,000 IOS gaat dat allemaal voor u te behandelen. 1082 00:58:46,000 --> 00:58:51,000 Het is prachtig, en je bent niet overtreden van regels. Ja. 1083 00:58:51,000 --> 00:58:54,000 [Student] Als je meer teams die zouden kunnen passen op het scherm zijn, 1084 00:58:54,000 --> 00:58:58,000 zou het automatisch een scroll optie, of is dat iets wat je nodig hebt om toe te voegen? 1085 00:58:58,000 --> 00:59:01,000 Precies, als ik meer teams, bijvoorbeeld, zou het automatisch verwerken 1086 00:59:01,000 --> 00:59:04,000 het scrollen voor mij, en alle prestaties zorgen 1087 00:59:04,000 --> 00:59:08,000 met de enorme tafel zijn ook totaal behandeld voor mij. 1088 00:59:08,000 --> 00:59:11,000 >> Andere vragen? 1089 00:59:11,000 --> 00:59:13,000 Alle van deze code zal worden geplaatst. 1090 00:59:13,000 --> 00:59:16,000 We soort verdoezeld een beetje van de meer kleine details, 1091 00:59:16,000 --> 00:59:19,000 maar dingen zoals het instellen van een aantal eigenschappen van de webweergave 1092 00:59:19,000 --> 00:59:22,000 zijn gewoon dingen die je kunt krijgen door te bladeren Apple's documentatie, 1093 00:59:22,000 --> 00:59:24,000 dat is echt, echt mooi aangelegd. 1094 00:59:24,000 --> 00:59:27,000 Ze hebben veel van het monster apps en voorbeeld gebruiksmogelijkheden 1095 00:59:27,000 --> 00:59:34,000 van verschillende API's, dus zeker kennisnemen van die als je kunt. 1096 00:59:34,000 --> 00:59:36,000 Gewoon een aantal handige links die u zou willen om een ​​kijkje te nemen. 1097 00:59:36,000 --> 00:59:38,000 Dit zijn enkele handige documentatie gidsen. 1098 00:59:38,000 --> 00:59:41,000 De URL's zijn enorm, zodat ze ingekort. 1099 00:59:41,000 --> 00:59:44,000 Dit eerste is de gehele bibliotheek van documentatie. 1100 00:59:44,000 --> 00:59:46,000 Er is weinig zoekbalken, dus als je het typen knop starten 1101 00:59:46,000 --> 00:59:50,000 het zal beginnen met het geven u alle informatie over alle dingen die je kunt doen met een knop. 1102 00:59:50,000 --> 00:59:53,000 Ik heb ook de Table View Programming Guide. 1103 00:59:53,000 --> 00:59:56,000 Het behandelt tabelweergaven in veel meer detail, 1104 00:59:56,000 --> 01:00:00,000 hoe om dingen te doen, zoals dynamisch toe te voegen cellen of bewerken cellen of verwijderen. 1105 01:00:00,000 --> 01:00:02,000 >> Er is veel van het monster apps van Apple die zal u tonen hoe dat te doen, 1106 01:00:02,000 --> 01:00:05,000 en ten slotte, dit laatste is de Human Interface Guidelines, 1107 01:00:05,000 --> 01:00:09,000 en dit is eigenlijk een discussie van UI-componenten, 1108 01:00:09,000 --> 01:00:12,000 dingen als niet maken een knop dat is 4 pixels met 4 pixels. 1109 01:00:12,000 --> 01:00:15,000 Dat is een slecht idee, en andere dingen die Apple wil dat je doet 1110 01:00:15,000 --> 01:00:18,000 goede vormgeving stimuleren. 1111 01:00:18,000 --> 01:00:23,000 >> Nog een laatste vraag voordat we eindigen? 1112 01:00:23,000 --> 01:00:27,000 Oke, zeker te voelen vrij om-We gaan naar speciale etiketten op te discussiëren. 1113 01:00:27,000 --> 01:00:30,000 We hebben een iOS-een, dus zeker voel je vrij om dat te kunnen benutten. 1114 01:00:30,000 --> 01:00:34,000 Als u wilt met je klasgenoten werken aan projecten 1115 01:00:34,000 --> 01:00:37,000 of helpen erachter te komen wat willekeurige iOS stuff 1116 01:00:37,000 --> 01:00:40,000 voel je vrij om me te mailen, en zeker kennisnemen van alle code online omdat 1117 01:00:40,000 --> 01:00:43,000 alleen in het belang van de tijd dat we soort van verbloemd de meer 1118 01:00:43,000 --> 01:00:45,000 fijnere korrel details van dingen. 1119 01:00:45,000 --> 01:00:47,000 Maar zo niet, dan veel geluk op uw iOS-projecten, en ik hoop dat we 1120 01:00:47,000 --> 01:00:53,000 een grote instroom van apps in de App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]