1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminář] [iOS: Psaní aplikací, jako je Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [To je CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Dobře, všichni, vítejte na iOS: Psaní aplikací, jako je Boss. 5 00:00:12,000 --> 00:00:16,000 Tento seminář se bude soustředit na psaní aplikací pro iPhone 6 00:00:16,000 --> 00:00:19,000 a zase psát aplikace pro iPad, a tak jsme v podstatě chodit přes 7 00:00:19,000 --> 00:00:23,000 pár různých příkladů, jak vytvořit aplikace, jednoduché hry jako Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 nebo pokud vás více zajímá při vytváření aplikaci jako jakési čtečky zpráv 9 00:00:26,000 --> 00:00:30,000 nebo něco, který spolupracuje s internetu jsem se o tom mluvit stejně. 10 00:00:30,000 --> 00:00:32,000 Tady je náš stručný agenda. 11 00:00:32,000 --> 00:00:36,000 >> IOS aplikace jsou napsány v jazyce nazvaném Objective-C, 12 00:00:36,000 --> 00:00:39,000 a tak je trochu podobná C, ale ve skutečnosti vůbec, 13 00:00:39,000 --> 00:00:41,000 takže budeme mluvit trochu o jazyk sám 14 00:00:41,000 --> 00:00:45,000 a pak, jak se postavit iPhone aplikace pomocí této app program s názvem XCode, 15 00:00:45,000 --> 00:00:48,000 která, pokud jste si nestáhli to ještě klidně zahájit stahování nyní. 16 00:00:48,000 --> 00:00:50,000 Je to několik gigabajtů. 17 00:00:50,000 --> 00:00:54,000 Mělo by to být zdarma na App Store, takže budete muset mít Mac 18 00:00:54,000 --> 00:00:57,000 v ideálním případě běží nejnovější verzi OS X. 19 00:00:57,000 --> 00:00:59,000 Pokud si nejste, žádný problém. 20 00:00:59,000 --> 00:01:02,000 Máme Maců v science centru k dispozici pro vaše použití 21 00:01:02,000 --> 00:01:05,000 s XCode nainstalován, a tak neváhejte a použít ty pro rozvoj. 22 00:01:05,000 --> 00:01:07,000 Pokud chcete, aby se aplikace, ale nemají Mac, nebojte se. 23 00:01:07,000 --> 00:01:09,000 Je tu spousta areálu zdrojů za to. 24 00:01:09,000 --> 00:01:15,000 A pak se budeme na pokrytí 2 větší příklady různých aplikací, které můžete udělat. 25 00:01:15,000 --> 00:01:19,000 Objective-C je technicky, co se nazývá Super sada C. 26 00:01:19,000 --> 00:01:24,000 To znamená, že kód C je také platný Objective-C kódu. 27 00:01:24,000 --> 00:01:29,000 To znamená, že jsme trochu potrubí páskou na některých dalších funkcí do C. 28 00:01:29,000 --> 00:01:33,000 Některé z těchto funkcí patří nemají někdy psát malloc znovu, díky Bohu, 29 00:01:33,000 --> 00:01:36,000 no museli starat o ty hloupé ukazatelů a uvolňovat je a všechno to okolo 30 00:01:36,000 --> 00:01:40,000 nenáviděl jsi o C, a je to docela pryč v Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Nyní, Objective-C má také mnohem větší standardní knihovny, 32 00:01:43,000 --> 00:01:47,000 takže je mnohem více funkcí, dostanete zdarma vnitřní Objective-C. 33 00:01:47,000 --> 00:01:50,000 Pamatuješ, když jsme byli psaní PHP jsme si všimli, že jsme šli od 34 00:01:50,000 --> 00:01:54,000 Tento nejmenší jazyk obří knihovny všech těchto šílených věcí, které můžete udělat. 35 00:01:54,000 --> 00:01:56,000 Stejná věc se stane v iOS. 36 00:01:56,000 --> 00:01:59,000 Je tu objekty pro věci, jako je kalendář buddhisty, a opravdu nic 37 00:01:59,000 --> 00:02:05,000 můžete myslet, ze snad již existuje v implementaci Objective-C je. 38 00:02:05,000 --> 00:02:08,000 Cílem část Objective-C je odkazování něco 39 00:02:08,000 --> 00:02:11,000 tzv. Object-Oriented Programming. 40 00:02:11,000 --> 00:02:14,000 To je něco úplně nového konceptu, ale my jsme ve skutečnosti většinou naučil 41 00:02:14,000 --> 00:02:17,000 Mnoho z těchto pojmů již. 42 00:02:17,000 --> 00:02:19,000 Myšlenka objektově orientovaného programování je to, že budete uspořádat 43 00:02:19,000 --> 00:02:23,000 hodně kódu kolem těchto věcí tzv. tříd, 44 00:02:23,000 --> 00:02:26,000 a tyto třídy jsou opravdu oslaven structs. 45 00:02:26,000 --> 00:02:30,000 Uvnitř struct jsme v podstatě řekl, tady je věc, 46 00:02:30,000 --> 00:02:32,000 a tato věc může mít členy. 47 00:02:32,000 --> 00:02:35,000 Například, může uzel v propojeném seznamu jiné věci 48 00:02:35,000 --> 00:02:38,000 jako hodnoty, ukazatel na další uzel v seznamu, 49 00:02:38,000 --> 00:02:44,000 a společně, že ukazatel a tato hodnota tvoří tuto jednu instanci struct. 50 00:02:44,000 --> 00:02:47,000 Třídy jsou velmi podobné, s výjimkou 51 00:02:47,000 --> 00:02:50,000 třídy mohou mít také funkci uvnitř z nich. 52 00:02:50,000 --> 00:02:54,000 Když jsme prohlásil struct, mohli bychom pouze říci, int n nebo uzel * další. 53 00:02:54,000 --> 00:02:57,000 >> Nyní s Objective-C můžeme skutečně dát funkce 54 00:02:57,000 --> 00:02:59,000 uvnitř těchto věcí. 55 00:02:59,000 --> 00:03:03,000 Další věc, která třídy mohou udělat, je, že mohou dědit data z jiných tříd. 56 00:03:03,000 --> 00:03:07,000 Například, budeme se dívat na spoustu vestavěných Objective-C třídy. 57 00:03:07,000 --> 00:03:11,000 Jeden z nich by mohl být třída, která představuje pohled na obrazovce, 58 00:03:11,000 --> 00:03:14,000 a tak tím chci realizovat svůj vlastní názor 59 00:03:14,000 --> 00:03:18,000 jsme v podstatě říci, někoho firmy Apple zřejmě opravdu milí lidé, 60 00:03:18,000 --> 00:03:21,000 napsal tuto třídu pro mě, a to zvládá věci, jako je displaying tlačítek 61 00:03:21,000 --> 00:03:25,000 nebo vykreslování na obrazovku, a my bychom byli opravdu bolestný 62 00:03:25,000 --> 00:03:28,000 provádět všechny ty funkce sami, a tak jednoduše 63 00:03:28,000 --> 00:03:31,000 zdědění údajů můžeme říci vše, co udělal v této třídě 64 00:03:31,000 --> 00:03:34,000 Chci také uvnitř mé třídě, a pak budu dělat nějaké další věci, 65 00:03:34,000 --> 00:03:37,000 konkrétně implementovat aplikaci. 66 00:03:37,000 --> 00:03:40,000 To je to, co to slovo dědičnost znamená. Budeme vidět více konkrétní příklad. 67 00:03:40,000 --> 00:03:42,000 >> A konečně, klíč s objektově-orientovaného programování je to, že 68 00:03:42,000 --> 00:03:45,000 to vede k datové zapouzdření. 69 00:03:45,000 --> 00:03:48,000 V některé z našich problémů nastaví bychom mohli mít tyto velké, globální proměnné 70 00:03:48,000 --> 00:03:51,000 a globals všude, a to je, jak bychom sledovat stav. 71 00:03:51,000 --> 00:03:55,000 S třídami můžeme začít zapouzdření informace uvnitř objektu. 72 00:03:55,000 --> 00:03:58,000 Pokud budeme mít o jednu obrazovku na naší aplikaci, nemáme opravdu potřebují mít všechna data z 73 00:03:58,000 --> 00:04:01,000 na jinou obrazovku v našem app uvnitř toho, 74 00:04:01,000 --> 00:04:04,000 a tak zapouzdřením věci ve třídách této skutečnosti vede 75 00:04:04,000 --> 00:04:08,000 na mnohem lepší kódu designu, a to je možné s některými z dalších funkcí 76 00:04:08,000 --> 00:04:11,000 Objective-C. 77 00:04:11,000 --> 00:04:15,000 Varuje, syntaxe Objective-C je banány. 78 00:04:15,000 --> 00:04:19,000 Je to jako nic jsme neviděli, 79 00:04:19,000 --> 00:04:22,000 tak to je trochu křivka učení zvykat 80 00:04:22,000 --> 00:04:24,000 Co sakra to znamená? 81 00:04:24,000 --> 00:04:27,000 Ale jakmile se dostanete v minulosti, že počáteční křivka učení je to opravdu, ale opravdu hladký 82 00:04:27,000 --> 00:04:29,000 začít psát aplikace. 83 00:04:29,000 --> 00:04:33,000 >> Chcete-li deklarovat třídu, tedy tady je moje třída, existuje, 84 00:04:33,000 --> 00:04:35,000 a možná zde jsou některé věci, které budu definovat později, 85 00:04:35,000 --> 00:04:38,000 Jdu říct @ rozhraní. 86 00:04:38,000 --> 00:04:41,000 Jdu říct @ rozhraní. Chystám se dát své třídě jméno. 87 00:04:41,000 --> 00:04:43,000 A pak později někde jinde budu říkat @ konec, 88 00:04:43,000 --> 00:04:46,000 a všechno mezi @ rozhraní a @ konce 89 00:04:46,000 --> 00:04:48,000 bude moje třída. 90 00:04:48,000 --> 00:04:51,000 To bude to, co je uvnitř našich. Souborů h. 91 00:04:51,000 --> 00:04:55,000 Stejně jako v C naše. H soubory v podstatě řekl, zde jsou některé věci, které budou existovat. 92 00:04:55,000 --> 00:04:57,000 Já ne nutně ti, co dělají ještě, 93 00:04:57,000 --> 00:04:59,000 ale kompilátor potřebuje vědět, že existují. 94 00:04:59,000 --> 00:05:04,000 Později uvnitř naší. M. soubory, protože m pro Objective-C 95 00:05:04,000 --> 00:05:08,000 je místo, kde jsme se to vlastně bude definovat, co tyto třídy dělat. 96 00:05:08,000 --> 00:05:11,000 Stejně jako naše. Soubory C, jsme poskytli implementace pro funkce. 97 00:05:11,000 --> 00:05:15,000 Uvnitř naší. M. souboru budeme říkat tady je to, co všechny funkce 98 00:05:15,000 --> 00:05:18,000 uvnitř moje třída-co všichni dělají. 99 00:05:18,000 --> 00:05:22,000 A konečně, uvnitř struct bychom mohli říci, uvnitř těchto složených závorek 100 00:05:22,000 --> 00:05:25,000 int n nebo uzel * příští, 101 00:05:25,000 --> 00:05:28,000 a v Objective-C budeme používat na základě klíčového slova @ majetek, 102 00:05:28,000 --> 00:05:31,000 a to je to, co se děje k definování vlastností, 103 00:05:31,000 --> 00:05:36,000 nebo non-funkce, které jsou součástí mé třídy. 104 00:05:36,000 --> 00:05:40,000 >> Volání funkce v Objective-C je také banány. 105 00:05:40,000 --> 00:05:43,000 Když jsme vyhlásili funkce v jazyce C jsme si řekli něco jako int foo 106 00:05:43,000 --> 00:05:46,000 a otevřené paren a pak dal jí seznam argumentů. 107 00:05:46,000 --> 00:05:51,000 To je to, co prohlašuje, metody nebo funkce vypadá jako v Objective-C. 108 00:05:51,000 --> 00:05:54,000 Pokud chci, aby deklarovat funkci nebo metodu 109 00:05:54,000 --> 00:05:58,000 kde říkám metoda je opravdu jen funkce, která je členem třídy, 110 00:05:58,000 --> 00:06:01,000 tak trochu vzájemně zaměnitelné, ale ne ve skutečnosti, 111 00:06:01,000 --> 00:06:03,000 tak uvnitř mé metody Chci vytvořit novou metodu. 112 00:06:03,000 --> 00:06:06,000 Bude to nic vrátit, takže to bude typu void. 113 00:06:06,000 --> 00:06:08,000 To je návratový typ mé funkce. 114 00:06:08,000 --> 00:06:11,000 Nyní máme parens tady, protože-nevím. 115 00:06:11,000 --> 00:06:14,000 Další bude jméno mé funkce, 116 00:06:14,000 --> 00:06:17,000 a pak konečně máme středník, stejně jako jsme měli v C. 117 00:06:17,000 --> 00:06:19,000 Co je nového tady je ten chlap tady. 118 00:06:19,000 --> 00:06:22,000 Tato pomlčka je skutečně nezbytné, a to, co to říká, je to, že 119 00:06:22,000 --> 00:06:26,000 tato metoda zde musí být volána na instanci třídy. 120 00:06:26,000 --> 00:06:29,000 >> Poté, co jsme prohlásil naše structs jsme pravděpodobně řekl něco jako 121 00:06:29,000 --> 00:06:32,000 n struct uzel, a že ve skutečnosti vytvořili 122 00:06:32,000 --> 00:06:35,000 nebo instance jeden z těch structs tak, že jsem se mohl skutečně začít pracovat 123 00:06:35,000 --> 00:06:38,000 s tím, co je uvnitř ní, takže to pomlčka znamená, že musíme 124 00:06:38,000 --> 00:06:41,000 instanci třídy, stejně jako my, že instance struct 125 00:06:41,000 --> 00:06:43,000 Než budeme moci tuto metodu volat na něj. 126 00:06:43,000 --> 00:06:46,000 Pokud chci začít přidávat argumenty mých metod 127 00:06:46,000 --> 00:06:48,000 to dostane ještě více banánů. 128 00:06:48,000 --> 00:06:50,000 Tady je moje jméno metody. 129 00:06:50,000 --> 00:06:53,000 Pak budu mít dvojtečku, a po tomto dvojtečkou se píše tady přichází nějaké argumenty. 130 00:06:53,000 --> 00:06:56,000 Tato metoda přijímá jeden argument. 131 00:06:56,000 --> 00:06:59,000 Typ argumentu je int, a jméno tohoto argumentu 132 00:06:59,000 --> 00:07:03,000 nebo proměnná, která budu začít používat uvnitř metody se nazývá i. 133 00:07:03,000 --> 00:07:05,000 I v tomto případě je metoda. Trvá jeden argument. 134 00:07:05,000 --> 00:07:10,000 >> Pokud chcete začít přidávat další argumenty, že dostane více banánů 135 00:07:10,000 --> 00:07:13,000 v tom, že jsme to tlustého střeva, která říká, že tady je můj seznam argumentů. 136 00:07:13,000 --> 00:07:15,000 Tento první argument je číslo. 137 00:07:15,000 --> 00:07:17,000 Nyní, tento druhý argument je zajímavé. 138 00:07:17,000 --> 00:07:20,000 Proměnná, která budu používat uvnitř mé funkce 139 00:07:20,000 --> 00:07:23,000 se nazývá f, takže uvnitř mé funkce jsem mohl říct, 140 00:07:23,000 --> 00:07:25,000 f + = 1, nebo tak něco. 141 00:07:25,000 --> 00:07:30,000 To, co je zde v podstatě klíčem k tomuto argumentu nebo parametru. 142 00:07:30,000 --> 00:07:34,000 Stejně jako jsme měli klíčové hodnotové páry i něco jako JSON nebo asociativních polích 143 00:07:34,000 --> 00:07:37,000 Objective-C se rozhodli říct, jo, jen proto, že je to opravdu jasné, 144 00:07:37,000 --> 00:07:39,000 Při volání metody, co všechny tyto parametry jsou 145 00:07:39,000 --> 00:07:41,000 Já jsem vlastně bude jmenovat všechny. 146 00:07:41,000 --> 00:07:45,000 Když zavoláte metodu, budete vlastně říkají andFloat, 147 00:07:45,000 --> 00:07:47,000 a pak minete ho dovnitř 148 00:07:47,000 --> 00:07:50,000 >> Je zajímavé, že se tento není pojmenovaná, ale všechny ostatní parametry jsou 149 00:07:50,000 --> 00:07:53,000 takže pokud jsme měli třetí argument, abych mohl říct andFloat 150 00:07:53,000 --> 00:07:56,000 a další plovák a tak dále. 151 00:07:56,000 --> 00:08:01,000 Když jsem volat tyto metody je samozřejmě banánů, 152 00:08:01,000 --> 00:08:04,000 takže když mám objekt, a jsem definoval metodu nazvanou foo, 153 00:08:04,000 --> 00:08:09,000 a chci volat, spíše než říkat foo OPEN / CLOSE parens 154 00:08:09,000 --> 00:08:11,000 Jdu otevřít konzolu. 155 00:08:11,000 --> 00:08:13,000 Zde je jméno mého metody. 156 00:08:13,000 --> 00:08:17,000 Chystám se zavřít držák, a to je objekt Volám to na. 157 00:08:17,000 --> 00:08:20,000 Pamatujte si, že všechny tyto metody existují v rámci tříd 158 00:08:20,000 --> 00:08:23,000 protože třídy mohou mít metody definované uvnitř nich. 159 00:08:23,000 --> 00:08:26,000 >> Tady jsem svévolně vytvořil objekt nějaké třídy, 160 00:08:26,000 --> 00:08:28,000 a to je syntaxe pro to dělá. 161 00:08:28,000 --> 00:08:31,000 K dispozici jsou 2 kroky k vytvoření objektu. 162 00:08:31,000 --> 00:08:34,000 Prvním krokem je, že chci, aby přidělit místo. 163 00:08:34,000 --> 00:08:37,000 To je ekvivalent malloc. Nemáme říkat malloc už. 164 00:08:37,000 --> 00:08:42,000 My upustil m, dělal to alloc, a nahradil. C s. M.. 165 00:08:42,000 --> 00:08:47,000 Poté, co jsme Alloc něco, co pak je třeba ji inicializovat. 166 00:08:47,000 --> 00:08:49,000 V podstatě, když si vytvářet objekty budete chtít mít nějakou logiku 167 00:08:49,000 --> 00:08:53,000 , který vykonává, když jste vytvořili oni, takže si můžete projít v některých výchozích hodnot 168 00:08:53,000 --> 00:08:57,000 nebo něco takového, a tak to init metoda je to, co ve skutečnosti vytváří objekt. 169 00:08:57,000 --> 00:08:59,000 Jsme nejprve vyčlenit prostor, stejně jako jsme to udělali v C, 170 00:08:59,000 --> 00:09:04,000 a pak jsme ji inicializovat, které mohou nebo nemusí udělat spoustu. 171 00:09:04,000 --> 00:09:07,000 Pak se vracíme tuto věc do objektu o.. 172 00:09:07,000 --> 00:09:09,000 Je tu hvězda tady, protože je to technicky ukazatel, 173 00:09:09,000 --> 00:09:12,000 ale nebojte se, ukazatele nejsou tak velký obchod v Objective-C už. 174 00:09:12,000 --> 00:09:15,000 >> Nyní jsme instancí této třídy s názvem NSObject, 175 00:09:15,000 --> 00:09:19,000 a to je jen náhodná třída, která má Apple. 176 00:09:19,000 --> 00:09:22,000 Jsme instanci to, a teď mám instanci této třídy 177 00:09:22,000 --> 00:09:25,000 v tomto objektu O, to znamená, že když definována 178 00:09:25,000 --> 00:09:29,000 Tyto metody jsem mohl zavolat jim takhle. 179 00:09:29,000 --> 00:09:31,000 Podobně, když jsem chtěl volat metodu s jedním argumentem, 180 00:09:31,000 --> 00:09:34,000 tak toto je bar metoda, která bere jeden argument, 181 00:09:34,000 --> 00:09:38,000 a tady je baz: qux metoda, tak to trvá 2 argumenty. 182 00:09:38,000 --> 00:09:44,000 Toto je volání jedné funkce na tohoto objektu o.. 183 00:09:44,000 --> 00:09:46,000 Smysl? 184 00:09:46,000 --> 00:09:50,000 Syntaxe by měla smysl, ale tak nějak na to zvyknout. 185 00:09:50,000 --> 00:09:54,000 >> Dobře, pojďme mluvit o pár věcí, které jsou zabudovány do Objective-C 186 00:09:54,000 --> 00:09:56,000 , které nebyly nutně zabudován do C. 187 00:09:56,000 --> 00:09:59,000 V jazyce C jsme trochu museli vypořádat s řetězci, neboť tyto hloupých postav pole, 188 00:09:59,000 --> 00:10:01,000 a to mám opravdu otravné. 189 00:10:01,000 --> 00:10:04,000 Objective-C má ty vše postavené v roce pro nás, a je postavena v roce 190 00:10:04,000 --> 00:10:06,000 Pomocí této třídy s názvem NSString. 191 00:10:06,000 --> 00:10:10,000 Když chci vytvořit NSString máme více obskurní syntaxe. 192 00:10:10,000 --> 00:10:15,000 Spíše než říkat "cs50" Říkáme @ "cs50" 193 00:10:15,000 --> 00:10:17,000 a to je jen Syntaxe pro deklarování řetězců v Objective-C. 194 00:10:17,000 --> 00:10:21,000 To je velmi snadné zapomenout, takže se nemusíte. 195 00:10:21,000 --> 00:10:24,000 Teď, když jsem se to, je to řetězec, ale všimnete 196 00:10:24,000 --> 00:10:26,000 je to opravdu jen objekt. 197 00:10:26,000 --> 00:10:30,000 Řekl jsem NSString, což znamená, že instance třídy 198 00:10:30,000 --> 00:10:32,000 volal NSString, které někdo jiný psal pro mě, 199 00:10:32,000 --> 00:10:35,000 a oni byli velmi milý, a tak teď 200 00:10:35,000 --> 00:10:37,000 Můžu začít volat metody na něm. 201 00:10:37,000 --> 00:10:40,000 Pokud jsem volat metodu délky na tento objekt s 202 00:10:40,000 --> 00:10:43,000 to bude návrat ke mně délku řetězce. 203 00:10:43,000 --> 00:10:45,000 To je stejně jako strlen v C. 204 00:10:45,000 --> 00:10:47,000 To by se vrátit 4. 205 00:10:47,000 --> 00:10:51,000 >> Podobně, jiný způsob bych mohl chtít jen o to characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 To je metoda, která uvádí na tento řetězec je 207 00:10:54,000 --> 00:10:57,000 Chci, abyste si 0. charakter, 208 00:10:57,000 --> 00:10:59,000 a tak by to ke mně nevrátí znak c, 209 00:10:59,000 --> 00:11:02,000 a tam je celá parta více z těchto metod, které můžete Google opravdu snadno. 210 00:11:02,000 --> 00:11:07,000 Dokumentace Apple je skvělá, a my se na to podívat v trochu. 211 00:11:07,000 --> 00:11:09,000 Ti jsou řetězce. 212 00:11:09,000 --> 00:11:11,000 Máme také variabilní velikost pole zabudovaný 213 00:11:11,000 --> 00:11:13,000 Zapamatovat si mě na C, když jsme prohlásili, pole 214 00:11:13,000 --> 00:11:16,000 jsme museli říct, že máte 5 prvky, konec příběhu. 215 00:11:16,000 --> 00:11:18,000 Když jsme se dostali do JavaScriptu a PHP můžeme začít 216 00:11:18,000 --> 00:11:20,000 dělat věci, jako je přidávání prvků nebo pohyblivých prvků. 217 00:11:20,000 --> 00:11:22,000 Můžeme to udělat totéž v Objective-C. 218 00:11:22,000 --> 00:11:26,000 Spíše než vytvoření pole v normálním způsobem C 219 00:11:26,000 --> 00:11:30,000 máme opět další třídu s názvem NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 K dispozici je také NSArray, 221 00:11:33,000 --> 00:11:35,000 a to bude v podstatě zestručnit nějakou nabídku. 222 00:11:35,000 --> 00:11:38,000 To říká, že první věc, kterou chci udělat, je chci přidělit 223 00:11:38,000 --> 00:11:41,000 prostor pro nové pole, a poté, co jsem přidělovat 224 00:11:41,000 --> 00:11:43,000 I pak je třeba, aby ji inicializovat. 225 00:11:43,000 --> 00:11:45,000 Opět platí, že jen voláním těchto metod 2. 226 00:11:45,000 --> 00:11:48,000 Nyní což znamená, že uvnitř tohoto objektu se 227 00:11:48,000 --> 00:11:50,000 Jsem prázdné pole tam sedí. 228 00:11:50,000 --> 00:11:54,000 Pokud chci přidat něco na toto pole, mohu volat AddObject metody. 229 00:11:54,000 --> 00:11:59,000 Chci přidat objekt do pole a, a chci přidat řetězec CS50. 230 00:11:59,000 --> 00:12:02,000 Pokud bych chtěl naopak odstranit, že můžu říct, že chci, aby 231 00:12:02,000 --> 00:12:09,000 odebrat objekt na prvním místě na pole nebo objekt. 232 00:12:09,000 --> 00:12:11,000 >> Smysl? 233 00:12:11,000 --> 00:12:14,000 Dobře, tak nějak zvyknout hranatá závorka věc. 234 00:12:14,000 --> 00:12:18,000 Mimochodem, uvnitř mnoha knihoven Apple uvidíte tuto NS. 235 00:12:18,000 --> 00:12:21,000 NS vlastně kandiduje na další krok, který byl jednou z firem Steve Jobs první, 236 00:12:21,000 --> 00:12:24,000 a to je, kde se opravdu začal psát spoustu kódu 237 00:12:24,000 --> 00:12:27,000 jako druh základ pro Mac OS X a všechny ostatní věci, 238 00:12:27,000 --> 00:12:32,000 a tak to NS je druh této pěkné odkazu vykřiknout jednoho z předchozích společností 239 00:12:32,000 --> 00:12:34,000 zpět, když Apple byl první začínáte. 240 00:12:34,000 --> 00:12:36,000 Je to všude. 241 00:12:36,000 --> 00:12:41,000 Pojďme se podívat na více holistického Objective-C například. 242 00:12:41,000 --> 00:12:44,000 Tady jsem uvnitř XCode. 243 00:12:44,000 --> 00:12:47,000 Chcete-li se sem dostal, jsem se poprvé stáhli XCode z App Store, 244 00:12:47,000 --> 00:12:50,000 otevřel ji, a pak jsem šel sem do souboru, 245 00:12:50,000 --> 00:12:54,000 sem do nového, a pak se projektu. 246 00:12:54,000 --> 00:12:57,000 Poté, co jsem dělat, že jsem se všechny tyto možnosti, co chci vytvořit, 247 00:12:57,000 --> 00:12:59,000 a tak budeme se podívat na tyto možnosti později, 248 00:12:59,000 --> 00:13:03,000 ale jen pro tento příklad, protože jsme ve skutečnosti bude mít aplikace ještě, 249 00:13:03,000 --> 00:13:06,000 Přišel jsem sem, a já jsem řekl Nástroj příkazového řádku, 250 00:13:06,000 --> 00:13:09,000 a to je aplikace, která bych mohl běžet na příkazovém řádku 251 00:13:09,000 --> 00:13:12,000 stejně jako jsme byli běží od C. 252 00:13:12,000 --> 00:13:16,000 To je, jak jsem vytvořil tento projekt, a tak jsem tady, 253 00:13:16,000 --> 00:13:20,000 tak ať se podívat na první tohoto souboru, a to by mělo vypadat docela povědomý. 254 00:13:20,000 --> 00:13:24,000 Mám int jméno. Tady je můj přítel argc, můj druhý kamarád argv. 255 00:13:24,000 --> 00:13:30,000 A tak můžeme vidět, že je to vstupní bod pro mé první Objective-C aplikace. 256 00:13:30,000 --> 00:13:32,000 Zde můžeme ignorovat to pro teď. 257 00:13:32,000 --> 00:13:35,000 To je v podstatě nějaký správa paměti věci, které budete opravdu 258 00:13:35,000 --> 00:13:37,000 někdy se čeho bát. 259 00:13:37,000 --> 00:13:39,000 >> Pojďme se podívat na tohoto prvního bloku zde. 260 00:13:39,000 --> 00:13:46,000 Tento první řádek, když řeknu, že Student * alice = [[Student alloc] init] co to je dělá? 261 00:13:46,000 --> 00:13:50,000 Tato první student tady, je to pravděpodobně třídy. 262 00:13:50,000 --> 00:13:54,000 To není třída, která Apple napsal, ale je to třída, která jsem napsal. 263 00:13:54,000 --> 00:13:57,000 První věc, kterou chci udělat, je chci přidělit místo pro nový student, 264 00:13:57,000 --> 00:14:00,000 a pak chci k inicializaci, takže to mi dává zpět 265 00:14:00,000 --> 00:14:05,000 Tento nový student objekt, a já jsem to ukládání do proměnné s názvem Alice. 266 00:14:05,000 --> 00:14:07,000 Kde se to třída pochází? 267 00:14:07,000 --> 00:14:12,000 No, tady na levé straně jsou všechny různé soubory uvnitř mého projektu. 268 00:14:12,000 --> 00:14:16,000 Vidíme zde mám Student.h a Student.m. 269 00:14:16,000 --> 00:14:20,000 . H souboru, pamatujte, je místo, kde jsem se prohlásit všechny ty věci, 270 00:14:20,000 --> 00:14:22,000 že bude existovat v rámci třídy. 271 00:14:22,000 --> 00:14:25,000 >> Pojďme se na to podívat. 272 00:14:25,000 --> 00:14:29,000 Dobře, máme zde tuto @ rozhraní, a to říká, že přichází 273 00:14:29,000 --> 00:14:33,000 prohlášení o vše, co bude existovat ve své třídě. 274 00:14:33,000 --> 00:14:36,000 Pak mám dvojtečku. Pak jsem si tento NSObject věc. 275 00:14:36,000 --> 00:14:40,000 Tato dvojtečka znamená, že dědické trochu jsme diskutovali trochu dříve. 276 00:14:40,000 --> 00:14:43,000 To říká, že vše, co může udělat NSObject 277 00:14:43,000 --> 00:14:46,000 kde NSObject je tato třída napsal někdo jiný, 278 00:14:46,000 --> 00:14:50,000 vše toto NSObject může udělat Chci být schopen to udělat. 279 00:14:50,000 --> 00:14:54,000 Tím, že říkáte: NSObject to znamená, že jsem v podstatě 280 00:14:54,000 --> 00:14:58,000 zdědil všechny funkce jiné třídy. 281 00:14:58,000 --> 00:15:02,000 To opravdu mi dal spoustu různých metod a vlastností, které mohu použít. 282 00:15:02,000 --> 00:15:05,000 Tady dole jsem vytvořit 2 vlastnosti. 283 00:15:05,000 --> 00:15:08,000 To znamená, že můj student, kdyby to byla struct, by tyto být 2 věci 284 00:15:08,000 --> 00:15:11,000 uvnitř mé struct, takže každý student má jméno 285 00:15:11,000 --> 00:15:14,000 že je řetězec, a student má také známku, 286 00:15:14,000 --> 00:15:17,000 který je int. 287 00:15:17,000 --> 00:15:23,000 >> Konečně, tady dole budu vytvořit metodu pro mého studenta. 288 00:15:23,000 --> 00:15:26,000 Zavolal jsem moje metoda, initWithName, a to trvá jeden argument, 289 00:15:26,000 --> 00:15:31,000 a tento argument je řetězec, a zavolal jsem to pojmenovat. 290 00:15:31,000 --> 00:15:35,000 Nyní se pojďme podívat na to, jak jsme vlastně provést tuto třídu. 291 00:15:35,000 --> 00:15:38,000 Tady, teď jsem uvnitř mé. Souboru m, 292 00:15:38,000 --> 00:15:40,000 m pro realizaci, myslím. 293 00:15:40,000 --> 00:15:44,000 Mám provádění, můj konec, a tady je místo, kde jsem vlastně definování 294 00:15:44,000 --> 00:15:47,000 co initWithName dělá. 295 00:15:47,000 --> 00:15:50,000 Mám initWithName, jméno mé parametru, a pak tento 296 00:15:50,000 --> 00:15:53,000 je místo, kde jsem vlastně vytvořit studenta, 297 00:15:53,000 --> 00:15:56,000 a tak to je trochu záhadný, ale tohle je standardizovaný 298 00:15:56,000 --> 00:15:58,000 které chcete zahrnout do svých konstruktérů. 299 00:15:58,000 --> 00:16:02,000 Tato funkce inicializace zde, initWithName, je typ konstruktoru. 300 00:16:02,000 --> 00:16:05,000 Ty v podstatě budovat nový studentský objekt 301 00:16:05,000 --> 00:16:07,000 a možná odesílání některé údaje uvnitř ní. 302 00:16:07,000 --> 00:16:11,000 První věc, kterou chci udělat, je chci volat init na této super věc. 303 00:16:11,000 --> 00:16:15,000 >> Pamatujte si, že když jsem řekl, tady v. Souboru h 304 00:16:15,000 --> 00:16:21,000 že všechno NSObject má student také má. 305 00:16:21,000 --> 00:16:24,000 To znamená, že když jsem se vytvořit studenta, co jsem také muset udělat, je 306 00:16:24,000 --> 00:16:28,000 ujistěte se, že NSObject, že jsem zdědil všechny těchto údajů z 307 00:16:28,000 --> 00:16:32,000 je také správně inicializován. 308 00:16:32,000 --> 00:16:36,000 Co musím říct, je to super bude skutečně odkazovat na mateřské třídy 309 00:16:36,000 --> 00:16:39,000 že jsem dědí z, tak chci, aby se ujistil jsem inicializovat 310 00:16:39,000 --> 00:16:43,000 všechno, co jsem v závislosti na než začnu se snaží používat. 311 00:16:43,000 --> 00:16:46,000 Pak-li to správně inicializován je to stejně jako ostatní, pokud malloc 312 00:16:46,000 --> 00:16:50,000 neměl vrátit hodnotu null, pak mohu začít nastavovat některé vlastnosti. 313 00:16:50,000 --> 00:16:54,000 >> V JavaScriptu a PHP jsme toto klíčové slovo volal toto, 314 00:16:54,000 --> 00:16:58,000 a to jen na aktuální instanci třídy. 315 00:16:58,000 --> 00:17:00,000 V Objective-C nazýváme tuto já. 316 00:17:00,000 --> 00:17:04,000 Když říkám self.name, to znamená, že objekt 317 00:17:04,000 --> 00:17:07,000 Jen jsem vytvořil, když jsem řekl, studentka alloc init, 318 00:17:07,000 --> 00:17:09,000 že se to dá mi objekt. 319 00:17:09,000 --> 00:17:12,000 To znamená, že chcete nastavit název tohoto objektu 320 00:17:12,000 --> 00:17:15,000 na co jsem právě prošel dovnitř 321 00:17:15,000 --> 00:17:18,000 Stejně jako v C, mít přístup členů s touto tečkou, 322 00:17:18,000 --> 00:17:21,000 tak self.name říká, že jméno studenta objektu 323 00:17:21,000 --> 00:17:24,000 se nyní bude, co jste právě prošel dovnitř 324 00:17:24,000 --> 00:17:28,000 A tak nakonec, mohu se vrátit, tak jsem skutečně dostat něco zpátky. 325 00:17:28,000 --> 00:17:30,000 >> Otázky? 326 00:17:30,000 --> 00:17:34,000 Dobře, takže toto self = Super init, 327 00:17:34,000 --> 00:17:37,000 pokud nechcete úplně pochopit dědičnosti věci neboj. 328 00:17:37,000 --> 00:17:40,000 Jen vím, že pokud jste někdy chtěli vytvořit svůj vlastní init metodu jen 329 00:17:40,000 --> 00:17:42,000 udělat, a budete mít dobré jít. 330 00:17:42,000 --> 00:17:44,000 Jo. >> [Student] Co případě samostatné znamená? 331 00:17:44,000 --> 00:17:49,000 To znamená, že když jsme se malloc něco, co jsme vždy zkontrolovat, jestli je to rovná null, 332 00:17:49,000 --> 00:17:51,000 a je-li to nula, potom se ukončí. 333 00:17:51,000 --> 00:17:55,000 To je totéž, protože pokud to vrátí null, pak jsme pravděpodobně bude seg poruchy 334 00:17:55,000 --> 00:17:57,000 pokud bychom začít se snaží manipulovat. 335 00:17:57,000 --> 00:18:01,000 To je naše studentka třídy. 336 00:18:01,000 --> 00:18:03,000 To znamená, že můžeme inicializovat naše studenty jedním ze dvou způsobů. 337 00:18:03,000 --> 00:18:08,000 Když řeknu, že studentka alloc init nebudu používat tuto metodu, že jsem právě napsal, 338 00:18:08,000 --> 00:18:11,000 a místo toho jsem si prostě říct alice.name, 339 00:18:11,000 --> 00:18:14,000 a teď jdu nastavit, aby název vlastnosti. 340 00:18:14,000 --> 00:18:17,000 >> Podobně, když chci používat tuto metodu initWithName 341 00:18:17,000 --> 00:18:20,000 Mohu jen říci Alloc, a pak spíše než říkat init 342 00:18:20,000 --> 00:18:24,000 Jdu zavolat, že metody, které jsem vytvořil, a budu se pak Bob. 343 00:18:24,000 --> 00:18:30,000 V tomto bodě, tento objekt Bob má jméno stejné Bobovi. 344 00:18:30,000 --> 00:18:35,000 Dobře, tady dole jsem pomocí tohoto NSMutableArray, že jsme se zaměřili na starší. 345 00:18:35,000 --> 00:18:38,000 Jsem přidělování space.Then jsem inicializaci nového pole. 346 00:18:38,000 --> 00:18:40,000 Chystám se přidat 2 věci k ní. 347 00:18:40,000 --> 00:18:43,000 Toto pole nyní drží studentské objekty. 348 00:18:43,000 --> 00:18:46,000 Všimněte si, že nikde jsem si, že tohle je pole studentů. 349 00:18:46,000 --> 00:18:48,000 Řekl jsem, že je to pole, období. 350 00:18:48,000 --> 00:18:50,000 Pak jsem si dal, co do ní, že chci. 351 00:18:50,000 --> 00:18:52,000 Tady mám 2 objekty. 352 00:18:52,000 --> 00:18:56,000 >> Nakonec, mám jiný objekt zde, tento TF. 353 00:18:56,000 --> 00:18:59,000 Tady v TF.h v podstatě totéž. 354 00:18:59,000 --> 00:19:01,000 Já jsem zdědil od NSObject, a mimochodem, 355 00:19:01,000 --> 00:19:03,000 Při vytváření tříd je to všechno pro tebe udělal, 356 00:19:03,000 --> 00:19:06,000 tento druh rozhraní standardizovaný. 357 00:19:06,000 --> 00:19:08,000 To má vlastnost studentů. 358 00:19:08,000 --> 00:19:15,000 Mám pár Metody zde nejsou opravdu spoustu, 359 00:19:15,000 --> 00:19:18,000 a tak to znamená, že poté, co jsem vytvořit tento objekt TF 360 00:19:18,000 --> 00:19:23,000 Můžu zavolat tuto metodu stupně na to takhle. 361 00:19:23,000 --> 00:19:26,000 Jakékoliv dotazy týkající se Objective-C syntaxí než začneme stěhovat do některé další 362 00:19:26,000 --> 00:19:30,000 zajímavé aplikace vývoj věci? 363 00:19:30,000 --> 00:19:34,000 >> Dobře, tak pojďme vlastně dělat aplikace pro iPhone. 364 00:19:34,000 --> 00:19:39,000 V základní třídy, které budete používat uvnitř vašeho iPhone app se nazývá zobrazení regulátory, 365 00:19:39,000 --> 00:19:42,000 a pohled regulátor v podstatě představuje jedinou obrazovku 366 00:19:42,000 --> 00:19:46,000 uvnitř vaší aplikace, takže když jsem na hudební aplikace, například, 367 00:19:46,000 --> 00:19:50,000 Jeden pohled regulátor by mohlo představovat názor, ve kterém jsem zobrazit všechny skladby na mém iPhone. 368 00:19:50,000 --> 00:19:53,000 Jiný pohled regulátor mohl být, když jsem klikněte na skladbu a začít hrát ji 369 00:19:53,000 --> 00:19:55,000 nebo jak jsem vrtání dolů do umělci. 370 00:19:55,000 --> 00:19:59,000 Každá z těchto různých obrazovek může být reprezentován jako jiný pohled regulátoru, 371 00:19:59,000 --> 00:20:04,000 a pohled řadič je opravdu jen třída, která říká, jak se tato obrazovka funguje. 372 00:20:04,000 --> 00:20:07,000 Věci uvnitř kontroleru pohledu, budeme mít vlastnosti, 373 00:20:07,000 --> 00:20:10,000 takže věci jako tlačítko bude vlastnost našeho pohledu regulátoru. 374 00:20:10,000 --> 00:20:13,000 >> Jsme také bude mít metody, a to jsou v podstatě obslužné rutiny. 375 00:20:13,000 --> 00:20:16,000 Tato metoda říká, že když stisknete toto tlačítko 376 00:20:16,000 --> 00:20:19,000 Chci udělat něco, a nakonec, opět, 377 00:20:19,000 --> 00:20:24,000 budeme používat tento vlastní klíčové slovo pro přístup k aktuální instanci. 378 00:20:24,000 --> 00:20:29,000 Chcete-li vytvořit rozhraní v systému iOS, je opravdu velmi snadné. 379 00:20:29,000 --> 00:20:32,000 Mají tento pěkný drag and drop rozhraní s názvem Interface Builder, 380 00:20:32,000 --> 00:20:37,000 a 2 základní pojmy, které drát vašeho Objective-C Interface Builderu 381 00:20:37,000 --> 00:20:40,000 jsou IBOutlet a IBAction. 382 00:20:40,000 --> 00:20:44,000 IBOutlet jednoduše říká, že pokud jste deklarovat vlastnost, která je tlačítko, 383 00:20:44,000 --> 00:20:47,000 a chcete ji připojit k něčemu ve vaší skutečné rozhraní, 384 00:20:47,000 --> 00:20:49,000 budete říkat, že je to outlet. 385 00:20:49,000 --> 00:20:51,000 Podobně, pokud chcete, aby zastupoval obslužnou rutinu události 386 00:20:51,000 --> 00:20:54,000 pak budete říkat, že je to akce. 387 00:20:54,000 --> 00:20:57,000 >> Chcete-li skutečně zapojit do tohoto grafického znázornění 388 00:20:57,000 --> 00:21:00,000 a váš kód je to opravdu, opravdu jednoduché. 389 00:21:00,000 --> 00:21:03,000 Pokud chcete připojit IBOutlet, vše, co musíte udělat, je můžete ovládat tlačítkem, 390 00:21:03,000 --> 00:21:05,000 a uvidíme příklad to opravdu rychle. 391 00:21:05,000 --> 00:21:07,000 Můžete ovládat klikněte tam, kde se říká, View Controller. 392 00:21:07,000 --> 00:21:09,000 Budeš přetáhnout do rozhraní, nebo naopak, 393 00:21:09,000 --> 00:21:13,000 Chcete-li připojit obslužnou rutinu události budete přetáhnout z rozhraní 394 00:21:13,000 --> 00:21:15,000 v opačném směru. 395 00:21:15,000 --> 00:21:20,000 Pojďme se podívat na opravdu jednoduchém příkladu iOS. 396 00:21:20,000 --> 00:21:23,000 >> Pojďme vytvořit nový projekt. 397 00:21:23,000 --> 00:21:25,000 Chystám se přijít sem do aplikace, 398 00:21:25,000 --> 00:21:28,000 a budu na tlačítko Single View aplikace. 399 00:21:28,000 --> 00:21:31,000 Jdu na tlačítko Další. Dám svůj projekt název. 400 00:21:31,000 --> 00:21:33,000 Zavolám jí Hello. 401 00:21:33,000 --> 00:21:36,000 Zajímavé je, že Apple předpokládá, že budete vytvářet produkt 402 00:21:36,000 --> 00:21:38,000 takže můžete prodat a oni mohou vydělat peníze. 403 00:21:38,000 --> 00:21:41,000 Tady dole jsem chtěl říct, že je to iPhone app. 404 00:21:41,000 --> 00:21:44,000 Můžete vytvořit aplikaci pro iPad, nebo pokud chcete vytvořit jednu z těchto aplikací 405 00:21:44,000 --> 00:21:47,000 , který podporuje obě zařízení, které můžete udělat taky. 406 00:21:47,000 --> 00:21:49,000 Jedná se o to, co chcete, aby vaše zaškrtnutí vypadat. 407 00:21:49,000 --> 00:21:51,000 >> Chcete-li použít storyboardy, které uvidíme později, 408 00:21:51,000 --> 00:21:54,000 a určitě chcete používat automatickou počítání referencí, 409 00:21:54,000 --> 00:21:58,000 což je sympatické, že vám brání museli říct, malloc a free. 410 00:21:58,000 --> 00:22:03,000 Pokud chcete volat malloc a free, tak bych opustit tento kontrolovány. 411 00:22:03,000 --> 00:22:07,000 Budu klepněte na tlačítko Další, a nakonec, to bude a zeptejte se mě, kde chci uložit. 412 00:22:07,000 --> 00:22:14,000 Budu hit vytvořit, a je to tady. 413 00:22:14,000 --> 00:22:16,000 Vytvořil jsem nový projekt. 414 00:22:16,000 --> 00:22:19,000 Sem na levé straně jsou všechny soubory, které jsou uvnitř mého projektu, 415 00:22:19,000 --> 00:22:22,000 a všimněte si, že mám spoustu, a ani jsem nic. 416 00:22:22,000 --> 00:22:24,000 IOS je skvělá. 417 00:22:24,000 --> 00:22:27,000 >> Například, tady to ViewController.h, 418 00:22:27,000 --> 00:22:30,000 to bude představovat svůj první pohled řadič, 419 00:22:30,000 --> 00:22:32,000 takže první obrazovce uvnitř mé aplikace. 420 00:22:32,000 --> 00:22:34,000 Teď už vím, co to říká. 421 00:22:34,000 --> 00:22:36,000 Říkáme volám této třídy ViewController, 422 00:22:36,000 --> 00:22:40,000 a ViewController dělá vše, co UIViewController dělá, 423 00:22:40,000 --> 00:22:43,000 a to je opět nějaký třída, která Apple napsal, že dělá hodně šikovný věcí pro nás 424 00:22:43,000 --> 00:22:46,000 Líbí zobrazení obrazovky. 425 00:22:46,000 --> 00:22:50,000 Tady je místo, kde mohu skutečně začít vymezení toho, co podle mého názoru regulátor dělá, 426 00:22:50,000 --> 00:22:52,000 a ukázalo se, že jsem se opravdu nepotřebují nic z toho. 427 00:22:52,000 --> 00:22:55,000 To je často používaný kód, který Apple mi dává zdarma. 428 00:22:55,000 --> 00:22:59,000 Já jsem třeba, že první řádek, nebo nemám třídu, 429 00:22:59,000 --> 00:23:02,000 takže se můžeme zbavit toho a toho zbavit. 430 00:23:02,000 --> 00:23:05,000 Dobře, tak to je moje prázdná obrazovka. 431 00:23:05,000 --> 00:23:08,000 >> Nyní pojďme klikněte na MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 a to je místo, kde to začíná být zajímavé. 433 00:23:11,000 --> 00:23:14,000 Jedná se o první obrazovku na své aplikace. 434 00:23:14,000 --> 00:23:17,000 Pokud chci přidat tlačítko, v HTML jsem musel vytvořit tlačítko tag. 435 00:23:17,000 --> 00:23:20,000 V Android budete muset vytvořit tlačítka značku, 436 00:23:20,000 --> 00:23:23,000 ale v iOS, pokud jsem sem přišel, aby v pravém dolním rohu 437 00:23:23,000 --> 00:23:27,000 a když jsem klikněte na tento třetí jeden tady, kde se říká objektů, 438 00:23:27,000 --> 00:23:31,000 a můžu se posunout dolů, nebo můžu začít hledat tlačítko. 439 00:23:31,000 --> 00:23:35,000 A podívejte se, tlačítka, takže když jsem vlastně přetáhnout toto právo existuje, 440 00:23:35,000 --> 00:23:38,000 Právě jsem přidal tlačítko na tuto obrazovku, na mém app. 441 00:23:38,000 --> 00:23:41,000 Pokud chci změnit text, mohu dvakrát na ni klikněte, 442 00:23:41,000 --> 00:23:47,000 říct něco nalákat jako "Stiskněte mě." 443 00:23:47,000 --> 00:23:51,000 Dobře, teď, když spustím tuto aplikaci, tak jsme jej zkompilovat 444 00:23:51,000 --> 00:23:54,000 tak spustit jsem klikněte na tlačítko Play v levém horním rohu, a tady je moje app. 445 00:23:54,000 --> 00:23:58,000 Neudělal jsem nic, a já jsem dostal sladkou hledá pro iPhone. 446 00:23:58,000 --> 00:24:01,000 Pokud chci, aby to zastavit, můžete kliknout na tlačítko stop 447 00:24:01,000 --> 00:24:03,000 protože je to větší zábava. 448 00:24:03,000 --> 00:24:07,000 >> Řekněme, že jsem vlastně chci aby se něco stalo, když jsem stiskněte toto tlačítko. 449 00:24:07,000 --> 00:24:09,000 K tomu, že to, co musím udělat, je, že jsem třeba vytvořit 450 00:24:09,000 --> 00:24:13,000 nové obslužné rutiny události nebo akce. 451 00:24:13,000 --> 00:24:16,000 To znamená, že musím vytvořit nějakou metodu, kterou chci být nazýván 452 00:24:16,000 --> 00:24:18,000 když jsem stiskněte tlačítko, tak se pojďme vytvořit novou metodu. 453 00:24:18,000 --> 00:24:20,000 Jsem uvnitř ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Musím říci, že existuje metoda. 455 00:24:22,000 --> 00:24:26,000 Potřebuji pomlčku jako první, protože budu se volá to na kontroleru pohledu. 456 00:24:26,000 --> 00:24:28,000 Musím dát to typ. 457 00:24:28,000 --> 00:24:31,000 Typ to bude, že IBAction věc, kterou jsme viděli dříve. 458 00:24:31,000 --> 00:24:35,000 To je obslužná rutina událost, takže to bude vrátit IBAction, 459 00:24:35,000 --> 00:24:38,000 a to je náznak, aby XCode říci, že 460 00:24:38,000 --> 00:24:40,000 to je něco, co chci zapojit něco. 461 00:24:40,000 --> 00:24:45,000 Můžu dát mu jméno, jako je buttonPressed, středníkem. 462 00:24:45,000 --> 00:24:48,000 >> Teď jsem vyhlásil novou metodu uvnitř mé třídy. 463 00:24:48,000 --> 00:24:50,000 Já jsem řekl, tato metoda má existovat. 464 00:24:50,000 --> 00:24:53,000 Nyní se pojďme přijít do ViewController.m, 465 00:24:53,000 --> 00:24:56,000 a řekněme, že to, co tato metoda může udělat. 466 00:24:56,000 --> 00:25:03,000 Když začnu psát, například, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 Oznámení XCode je to opravdu pěkné a autocompletes pro mě. 468 00:25:06,000 --> 00:25:09,000 To je opravdu úžasné. 469 00:25:09,000 --> 00:25:12,000 Všimněte si, že uvnitř. M. souboru mohu také říci neplatné, 470 00:25:12,000 --> 00:25:15,000 a to proto, že IBAction není vlastně druh. 471 00:25:15,000 --> 00:25:19,000 Je to vlastně hashtag definován někde být neplatné, 472 00:25:19,000 --> 00:25:22,000 a znovu, je to jen náznak, aby XCode, že říká, že 473 00:25:22,000 --> 00:25:25,000 Chci, aby to bylo obslužná rutina událost, a uvidíme, proč pár sekund. 474 00:25:25,000 --> 00:25:28,000 Po stisknutí tohoto tlačítka se budu dělat něco nepříjemné 475 00:25:28,000 --> 00:25:30,000 Líbí zobrazí popup. 476 00:25:30,000 --> 00:25:35,000 >> Chcete-li, že mohu vytvořit novou instanci této třídy s názvem UIAlertView, 477 00:25:35,000 --> 00:25:39,000 a to je třída, která Apple napsal, že se bude zobrazovat otravné vyskakovací okna. 478 00:25:39,000 --> 00:25:43,000 Budeme volat tento popup upozornění, a mám 2 kroky, nezapomeňte, k vytvoření tohoto objektu. 479 00:25:43,000 --> 00:25:46,000 První věc, kterou musím udělat, je přidělit místo. 480 00:25:46,000 --> 00:25:48,000 Chci UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Chci přidělit místo. To je můj první metoda. 482 00:25:51,000 --> 00:25:53,000 Můj další metoda je chci k inicializaci, 483 00:25:53,000 --> 00:25:58,000 a tak mám tuhle velkou, dlouhou metodu zvanou initWithTitle. 484 00:25:58,000 --> 00:26:01,000 To je v podstatě bude kontrolovat, co to popup říká. 485 00:26:01,000 --> 00:26:04,000 Název mé Popup může být ahoj. 486 00:26:04,000 --> 00:26:08,000 Poselství tohoto okénka může být "Tohle je iOS." 487 00:26:08,000 --> 00:26:10,000 Delegát věc, já nevím, co to je. 488 00:26:10,000 --> 00:26:13,000 Řekněme, že to nic není. 489 00:26:13,000 --> 00:26:18,000 Nyní tlačítko, že se to objeví říct něco jako "To jistě je," 490 00:26:18,000 --> 00:26:24,000 a já opravdu nechci žádné další tlačítko, tak se pojďme odstranit to a zavřete konzolu. 491 00:26:24,000 --> 00:26:27,000 >> Dobře, jsem vytvořil ještě jednu. Tam jdeme. 492 00:26:27,000 --> 00:26:30,000 To je, jak mohu vytvořit nový popup. 493 00:26:30,000 --> 00:26:35,000 Pokud chci skutečně ukázat popup chci volat show metody. 494 00:26:35,000 --> 00:26:38,000 Chcete-li, že mohu říci, upozornění a ukázat, 495 00:26:38,000 --> 00:26:40,000 a znovu, autocomplete byl super nice. 496 00:26:40,000 --> 00:26:42,000 Pokud jsem zapomněl, co to bylo, kdybych si napsali v s, 497 00:26:42,000 --> 00:26:45,000 Mohu procházet sem přijít na to, co to je, 498 00:26:45,000 --> 00:26:48,000 a filtruje pěkně. 499 00:26:48,000 --> 00:26:52,000 Teď jsem vytvořil tento nový popup. 500 00:26:52,000 --> 00:26:55,000 Vrátíme se na to, co delegát znamená později, 501 00:26:55,000 --> 00:26:58,000 a teď chci říct, chci to metoda, která se padáka 502 00:26:58,000 --> 00:27:01,000 když jsem stiskněte tlačítko, takže budu se vrátit do mého scénáře, 503 00:27:01,000 --> 00:27:04,000 a chci teď připojit tuto IBAction. 504 00:27:04,000 --> 00:27:06,000 První věc, kterou chcete udělat, je kliknout na tlačítko. 505 00:27:06,000 --> 00:27:08,000 Když jsem toto tlačítko Chci aby se něco stalo. 506 00:27:08,000 --> 00:27:10,000 Nebudu držet kontrolu. 507 00:27:10,000 --> 00:27:13,000 Jdu na tlačítko a přetáhněte tlačítko 508 00:27:13,000 --> 00:27:15,000 na více než tady, kde se říká, že View Controller. 509 00:27:15,000 --> 00:27:17,000 Můžeme vidět, že to pěkně svítí. 510 00:27:17,000 --> 00:27:22,000 >> Pokud jsem se pustil se svým myší Teď mám to okno sem, kde jsem nějaké možnosti. 511 00:27:22,000 --> 00:27:24,000 Jedním z nich je událostí, které mohu zaregistrovat. 512 00:27:24,000 --> 00:27:28,000 Jedná se o všechny ty metody I deklarovaných v mém souboru h jako IBActions. 513 00:27:28,000 --> 00:27:31,000 To je, jak XCode ví, co by se měl objevit v tomto malém seznamu, 514 00:27:31,000 --> 00:27:33,000 tak, že je to jen náznak. 515 00:27:33,000 --> 00:27:37,000 Kdybych klikněte na tlačítko stisknuto, jsem nyní registrováno obslužnou rutinu události. 516 00:27:37,000 --> 00:27:41,000 V JavaScriptu jsme museli říct, že jsem nějaký kód, který registrována obslužná rutina událost. 517 00:27:41,000 --> 00:27:43,000 V Objective-C bylo opravdu tak jednoduché. 518 00:27:43,000 --> 00:27:46,000 Když spustím to znovu 519 00:27:46,000 --> 00:27:49,000 teď, když jsem stiskněte tlačítko můj obslužná rutina událost je vyhodí, 520 00:27:49,000 --> 00:27:51,000 a budu si to popup. 521 00:27:51,000 --> 00:27:54,000 Super, super jednoduchý tam. 522 00:27:54,000 --> 00:27:57,000 >> Pokud jste někdy chtěli vidět všechny události, které se dějí být registrovány 523 00:27:57,000 --> 00:28:00,000 na komponenty, pokud jsem klikněte na toto tlačítko 524 00:28:00,000 --> 00:28:02,000 a já jsem přišel sem na pravé straně 525 00:28:02,000 --> 00:28:05,000 první můžete vidět tady můžu dělat věci, jako je typ tlačítka, 526 00:28:05,000 --> 00:28:08,000 takže pokud chcete jednu z těch, které jsem to, nebo na Přidat kontakt tlačítko 527 00:28:08,000 --> 00:28:10,000 nebo cokoliv jiného. 528 00:28:10,000 --> 00:28:13,000 Pokud chci vidět všechny události, které jsou na toto tlačítko 529 00:28:13,000 --> 00:28:16,000 když jsem přišel celou cestu sem na pravé straně 530 00:28:16,000 --> 00:28:19,000 můžeme vidět zde na události, které mám všechny tyto různé události. 531 00:28:19,000 --> 00:28:23,000 Mohu stiskněte tlačítko, když jsem pustil tlačítka, když jsem dvakrát kohout nebo cokoliv, 532 00:28:23,000 --> 00:28:26,000 a ten, který jsem právě registrován, je tato událost nazývá Dotkněte se uvnitř, 533 00:28:26,000 --> 00:28:29,000 a to říká, že jakmile můj prst přijde na tlačítko 534 00:28:29,000 --> 00:28:32,000 tato událost se chystá na oheň, a to je přesně to, co se právě stalo. 535 00:28:32,000 --> 00:28:36,000 To je druh výchozí tlačítko stisknuté události. 536 00:28:36,000 --> 00:28:39,000 >> Jakékoliv otázky tak daleko? 537 00:28:39,000 --> 00:28:43,000 Dobře, že to, jak můžeme začít zapojit do věci v našem kódu 538 00:28:43,000 --> 00:28:46,000 do věcí uvnitř našeho rozhraní. 539 00:28:46,000 --> 00:28:49,000 Nezapomeňte první věc, kterou jsme museli udělat, bylo najít kód, 540 00:28:49,000 --> 00:28:54,000 a pak jsme napojen rozhraní ke kódu, 541 00:28:54,000 --> 00:28:57,000 a tam to naše první app. 542 00:28:57,000 --> 00:29:00,000 Dobře, to bylo opravdu cool, a vytvořili jsme toto tlačítko. 543 00:29:00,000 --> 00:29:03,000 Co když nechceme, aby si vytvořit spoustu vlastností 544 00:29:03,000 --> 00:29:05,000 představuje tato tlačítka? 545 00:29:05,000 --> 00:29:08,000 Například, v Tic Tac Toe mám 9 tlačítek, 546 00:29:08,000 --> 00:29:11,000 a bylo by super, super nepříjemné muset přetáhnout 9 krát 547 00:29:11,000 --> 00:29:14,000 nebo když jsem musel dělat Tic Tac Toe s 81 místo 9 548 00:29:14,000 --> 00:29:17,000 a musel jsem drag and drop 81 krát, a to je lame. 549 00:29:17,000 --> 00:29:20,000 Co můžeme udělat, místo toho je podobně jako HTML 550 00:29:20,000 --> 00:29:23,000 když jsme měli věci jako ID a jména a můžeme hledat věci 551 00:29:23,000 --> 00:29:27,000 jejich ID, je to podobný pojem v iOS tzv. tagy. 552 00:29:27,000 --> 00:29:31,000 >> Tag je prostě jedinečný číselný identifikátor pro komponentu. 553 00:29:31,000 --> 00:29:34,000 Pokud Říkám to má tag 0, například, 554 00:29:34,000 --> 00:29:38,000 když jsem vytvořit tlačítko a dát mu tag 0, a uvidíme, jak to udělat, že pár sekund, 555 00:29:38,000 --> 00:29:41,000 když chci se dostat na toto tlačítko mohu jednoduše říct, chci volat 556 00:29:41,000 --> 00:29:45,000 viewWithTag metody na objektu sem, 557 00:29:45,000 --> 00:29:48,000 self.view, který představuje aktuální obrazovku, například. 558 00:29:48,000 --> 00:29:53,000 Kdybych zavolat, že viewWithTag metodu, budu zatáhněte tlačítko s tagem 0. 559 00:29:53,000 --> 00:29:58,000 Pojďme se podívat na to, že bude stavět Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Za prvé, to je můj scénář. 561 00:30:01,000 --> 00:30:05,000 Vytvořil jsem tyto 10 UI tlačítka. 562 00:30:05,000 --> 00:30:07,000 Všimněte si, že jsou všichni stejné velikosti. 563 00:30:07,000 --> 00:30:11,000 Kdybych klepněte na jednu z nich, a vrátím se sem na této pravé straně 564 00:30:11,000 --> 00:30:15,000 uvidíte jsem upravil písmo tady, tak jsem se na písmo, trochu větší, 565 00:30:15,000 --> 00:30:19,000 ale to, co jsem také udělal, bylo, jsem nastavte tento tag. 566 00:30:19,000 --> 00:30:23,000 Řekl jsem, že to má tag 1, a to vlevo nahoře. 567 00:30:23,000 --> 00:30:26,000 >> Teď, když jsem klikněte na další tlačítko, jako je tento druhý zde, 568 00:30:26,000 --> 00:30:29,000 Nyní uvidíte, že moje značka je 2. 569 00:30:29,000 --> 00:30:32,000 Každé z těchto tlačítek má prostě jedinečný značku, 570 00:30:32,000 --> 00:30:35,000 a tak to je později, jak budu začít interakci 571 00:30:35,000 --> 00:30:38,000 s mým aplikace. 572 00:30:38,000 --> 00:30:40,000 To vše je uvnitř jednoho pohledu regulátoru, 573 00:30:40,000 --> 00:30:42,000 ale tady je to, co máme. 574 00:30:42,000 --> 00:30:44,000 Máme 3 vlastnosti zde. 575 00:30:44,000 --> 00:30:49,000 První a poslední budou reprezentovat stav mé desce. 576 00:30:49,000 --> 00:30:53,000 V podstatě to první je pole představující kde Xs a Os jsou. 577 00:30:53,000 --> 00:30:57,000 Tento druhý zde nám říká, který je na tahu. 578 00:30:57,000 --> 00:31:01,000 Určitě jste si všimli, že jsem také tyto věci tady. 579 00:31:01,000 --> 00:31:05,000 Než když jsme prohlásili, vlastnosti, dal jim jméno a typ. 580 00:31:05,000 --> 00:31:08,000 Můžeme také dát jim nějaké další informace zde. 581 00:31:08,000 --> 00:31:11,000 Toto První říká nonatomic, a co to říká 582 00:31:11,000 --> 00:31:16,000 je v podstatě jen jedna věc, kterou nikdy nebude pokusu o přístup k této proměnné v čase. 583 00:31:16,000 --> 00:31:19,000 Dalo by se to složitější aplikace, které jsou multi-threaded, 584 00:31:19,000 --> 00:31:22,000 a tak v roce Scratch jsme měli různé závity, 585 00:31:22,000 --> 00:31:25,000 a různé skřítci mohli dělat různé věci ve stejnou dobu. 586 00:31:25,000 --> 00:31:29,000 >> Pokud to není tento případ, který není v ničem, že budeme při pohledu na, 587 00:31:29,000 --> 00:31:33,000 Řekneme-li nonatomic to vlastně bude dělat věci trochu rychleji. 588 00:31:33,000 --> 00:31:37,000 Máme také tuto věc s názvem assign, silný, nebo slabý. 589 00:31:37,000 --> 00:31:40,000 Tento přiřadit jen říká, že se jedná o standardní typ. 590 00:31:40,000 --> 00:31:43,000 To není objekt nebo ukazatel, protože je to jen bool, 591 00:31:43,000 --> 00:31:46,000 tak bool je vestavěn do Objective-C. 592 00:31:46,000 --> 00:31:49,000 To říká, že se nesnaží nic dělat fantazii s ukazateli zde. 593 00:31:49,000 --> 00:31:51,000 Je to normální stará scaler. 594 00:31:51,000 --> 00:31:54,000 Silné a slabé, to slabé říká, že ve skutečnosti 595 00:31:54,000 --> 00:31:57,000 Chci, aby to měl ukazovat na něco v pohledu regulátoru. 596 00:31:57,000 --> 00:32:00,000 Nebudu se skutečně přidělit nebo init to sám. 597 00:32:00,000 --> 00:32:04,000 Interface Builder, když jsem spustit aplikaci, bude zvládnout všechnu tu inicializaci. 598 00:32:04,000 --> 00:32:07,000 Když řeknu slabá, že říká, že někdo jiný bude vytvářet to. 599 00:32:07,000 --> 00:32:09,000 Když řeknu, že silná, to říká, že budu mít jeden 600 00:32:09,000 --> 00:32:12,000 to je vytvoření této desky objektu, 601 00:32:12,000 --> 00:32:14,000 a tak tady mám nějaké další metody zde, 602 00:32:14,000 --> 00:32:18,000 Například, akce, když je stisknuto tlačítko nová hra, 603 00:32:18,000 --> 00:32:20,000 akce pro při stisknutí některého z dalších tlačítek, 604 00:32:20,000 --> 00:32:23,000 a et cetera. 605 00:32:23,000 --> 00:32:26,000 >> Nebudeme se dostat do příliš mnoho logiky Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 i když je to velmi vzrušující, ale pojďme se podívat na 607 00:32:30,000 --> 00:32:33,000 některé z věcí, které můžeme udělat uvnitř iOS. 608 00:32:33,000 --> 00:32:35,000 Tato nová hra metoda se bude vyhozen 609 00:32:35,000 --> 00:32:37,000 když jsem stiskněte novou hru tlačítko. 610 00:32:37,000 --> 00:32:41,000 Chcete-li připojit, že až jsem prostě přijít do mého scénáře. 611 00:32:41,000 --> 00:32:43,000 Jsem klikl na novou hru. 612 00:32:43,000 --> 00:32:47,000 Pokud přijdu sem napravo vidím, že 613 00:32:47,000 --> 00:32:50,000 Dotkněte se uvnitř je připojen k newGame metody. 614 00:32:50,000 --> 00:32:53,000 To je důvod, proč to bude dostat padáka. 615 00:32:53,000 --> 00:32:56,000 Metoda newGame udělá nějaký soubor nahoru. 616 00:32:56,000 --> 00:32:59,000 Bude to, že chci, abys vymazat stav desky. 617 00:32:59,000 --> 00:33:01,000 To je pěkný způsob na proměnlivých polí. 618 00:33:01,000 --> 00:33:03,000 To je říct, že je to nyní X je na řadě, 619 00:33:03,000 --> 00:33:07,000 a teď jdu využít této viewWithTag věci. 620 00:33:07,000 --> 00:33:11,000 >> Já vím, že můj tlačítka mají slova 1-9, 621 00:33:11,000 --> 00:33:13,000 a to je něco, co jsem svévolně vybral. 622 00:33:13,000 --> 00:33:15,000 Pokud chci nastavit text každého tlačítka je prázdná 623 00:33:15,000 --> 00:33:17,000 protože jsem právě začal novou hru, a já nechci 624 00:33:17,000 --> 00:33:20,000 Xs nebo Os zůstat přes to dokážu. 625 00:33:20,000 --> 00:33:24,000 Můžu říct, chci názor na značku, 1, 2, 3, 4 et cetera. 626 00:33:24,000 --> 00:33:27,000 To bude tahat jinou tlačítko pokaždé. 627 00:33:27,000 --> 00:33:30,000 Tady budu vrci UIButton. 628 00:33:30,000 --> 00:33:33,000 Stejně jako my by mohlo vrhnout ints na plováky a naopak 629 00:33:33,000 --> 00:33:37,000 to říká, že chci hodit to na UIButton. 630 00:33:37,000 --> 00:33:40,000 To znamená, že druh je pak * UIButton 631 00:33:40,000 --> 00:33:43,000 protože ukazatelů, ale nebojte se, že to není děsivé už. 632 00:33:43,000 --> 00:33:47,000 >> Jakmile budu mít na toto tlačítko jdu volat metodu na to. 633 00:33:47,000 --> 00:33:50,000 Tato metoda se nazývá setTitle forState, a tak to říká 634 00:33:50,000 --> 00:33:53,000 Chci nastavit text tlačítka se prázdný řetězec, 635 00:33:53,000 --> 00:33:57,000 a chci, aby to bylo prázdný řetězec, pokud to není stisknuto. 636 00:33:57,000 --> 00:34:01,000 Pokud jsem pomocí této metody, mohu změnit text tlačítka 637 00:34:01,000 --> 00:34:04,000 jakmile někdo udeří, ale chceme říct, když je tlačítko jen tam sedí 638 00:34:04,000 --> 00:34:07,000 Chci text být prázdné. 639 00:34:07,000 --> 00:34:10,000 Nakonec, budeme inicializovat moje deska, 640 00:34:10,000 --> 00:34:12,000 a já řeknu, že všechno je v současné době 0, 641 00:34:12,000 --> 00:34:15,000 tak tato deska členové neměnná je proměnlivé pole, 642 00:34:15,000 --> 00:34:21,000 což znamená, že můžete volat AddObject metody a jen 0 uvnitř ní. 643 00:34:21,000 --> 00:34:23,000 To je to, co se stane, když si vytvořím novou hru. 644 00:34:23,000 --> 00:34:25,000 >> Pojďme se podívat na jinou. 645 00:34:25,000 --> 00:34:28,000 Tato metoda je zde IBAction, že se to být stisknuto 646 00:34:28,000 --> 00:34:31,000 pokaždé, když jeden z těch čtverců je stisknuto. 647 00:34:31,000 --> 00:34:33,000 Nyní máme nějaký Tic Tac Toe logika. 648 00:34:33,000 --> 00:34:36,000 Jsme přijít na to, který je na tahu, 649 00:34:36,000 --> 00:34:39,000 a na základě toho jsme buď nastavit X nebo O, 650 00:34:39,000 --> 00:34:43,000 ale jsme si všimli, že jsme opakovaného stejný obslužnou rutinu události 651 00:34:43,000 --> 00:34:45,000 pro jednoho každého z těchto tlačítek. 652 00:34:45,000 --> 00:34:49,000 To znamená, že nemám metodu pro levé horní tlačítko, 653 00:34:49,000 --> 00:34:52,000 jiný způsob tlačítko vpravo dole, i když jsem mohl udělat, že. 654 00:34:52,000 --> 00:34:54,000 To by nebylo opravdu dobrý design. 655 00:34:54,000 --> 00:34:57,000 Co tady dělám je, že jsem vlastně jít k určení 656 00:34:57,000 --> 00:35:00,000 co tag tlačítko, které byla stisknuta je. 657 00:35:00,000 --> 00:35:04,000 Všimněte si, že tato hra metoda přijímá jeden argument. 658 00:35:04,000 --> 00:35:07,000 Říká se tomu odesílatel, a to, co odesílatel je odesílatel bude 659 00:35:07,000 --> 00:35:10,000 představují přesně to, co bylo přijato opatření na. 660 00:35:10,000 --> 00:35:15,000 Pokud stisknu tlačítko, tento odesílatel bude, že UIButton 661 00:35:15,000 --> 00:35:18,000 že jsem vlastně stisknutí, takže to znamená, že tento UIButton 662 00:35:18,000 --> 00:35:20,000 má značku, protože jsem vytvořil značku. 663 00:35:20,000 --> 00:35:23,000 >> Pokud chci se dostat na značku mohu jen říci, 664 00:35:23,000 --> 00:35:26,000 Chci tag odesílatele, 665 00:35:26,000 --> 00:35:28,000 a znovu, právě jsem odlita to na UIButton. 666 00:35:28,000 --> 00:35:32,000 Já náhodou vím, že odesílatel bude UIButton. 667 00:35:32,000 --> 00:35:34,000 To nemusí vždy být UIButton. 668 00:35:34,000 --> 00:35:36,000 Mohl bych například, registrovat stejnou obslužnou rutinu události 669 00:35:36,000 --> 00:35:38,000  pro jeden pro tlačítka, jedno pro posuvníku. 670 00:35:38,000 --> 00:35:40,000 V tomto případě, já vím, že jsou všechna tlačítka, takže jsem chtěl říct 671 00:35:40,000 --> 00:35:43,000 Chci, aby to bylo tlačítko, a pak můžu dostat značku, 672 00:35:43,000 --> 00:35:48,000 a z tagu já teď vím, kde jsem uvnitř desky. 673 00:35:48,000 --> 00:35:51,000 Pak mohu jednoduše nastavit buď X nebo O, můžete přepínat na turnu, 674 00:35:51,000 --> 00:35:54,000 zjistit, kdo vyhrál, et cetera. 675 00:35:54,000 --> 00:35:59,000 >> Jakékoliv dotazy týkající se to tak daleko? 676 00:35:59,000 --> 00:36:02,000 Dobře, kód jsme dosáhli on-line nechceme dostat do příliš mnoho 677 00:36:02,000 --> 00:36:06,000 z Toe Tic Tac logice, ale teď je vidět, že opravdu 678 00:36:06,000 --> 00:36:09,000 vše, co děláme je my jsme looping přes tohoto pole, 679 00:36:09,000 --> 00:36:13,000 takže máme pár pro smyček zde, a my jsme jen porovnání vidět 680 00:36:13,000 --> 00:36:18,000 máme shodu ve všech řádcích, Relevance ve sloupci nebo něco podobného. 681 00:36:18,000 --> 00:36:21,000 Chcete-li skutečně spustit tuto aplikaci, když jsem klepněte na jedno z těchto tlačítek 682 00:36:21,000 --> 00:36:24,000 že hra metoda byl vyhozen, tak to znamená, že jsem byl právě nastavený 683 00:36:24,000 --> 00:36:31,000 Tlačítko být X, takže nyní toto tlačítko bude O, a tak dále, 684 00:36:31,000 --> 00:36:35,000 a tak to je, jak my teď začínáme pracovat s touto jedinou stránku aplikace. 685 00:36:35,000 --> 00:36:38,000 >> Budeme psát kód, tak neváhejte a prohlédnout, že 686 00:36:38,000 --> 00:36:43,000 ale pojďme nyní hovořit o některých aplikací, které jsou více než jen jednu stránku. 687 00:36:43,000 --> 00:36:47,000 Tak vzrušující jako Tic Tac Toe je, spousta aplikací uvnitř iOS 688 00:36:47,000 --> 00:36:50,000 jsou trochu z těchto cvičení se věci s více obrazovkami. 689 00:36:50,000 --> 00:36:54,000 První koncept, že budeme muset hovořit o jsou protokoly, 690 00:36:54,000 --> 00:36:57,000 a protokol je prostě soubor metod 691 00:36:57,000 --> 00:36:59,000 které můžete slíbit, že definovat. 692 00:36:59,000 --> 00:37:02,000 Pokud jsem vytvořit tento nový protokol s 2 metodami, tento první stupeň, 693 00:37:02,000 --> 00:37:05,000 pokud návratový typ je void, volal jsem to foo. 694 00:37:05,000 --> 00:37:07,000 To trvá žádné argumenty. Mám jinou metodu. 695 00:37:07,000 --> 00:37:11,000 To vrátí int. Nazval jsem ji blokovat, a to trvá jeden argument. 696 00:37:11,000 --> 00:37:14,000 To vše je protokol, který se nazývá SomeProtocol tady, 697 00:37:14,000 --> 00:37:19,000 Jedná se o soubor věcí, které někdo může realizovat. 698 00:37:19,000 --> 00:37:22,000 Nemám uvnitř tohoto protokolu řekl, co foo dělá. 699 00:37:22,000 --> 00:37:26,000 Místo toho, já jsem jen říct, že si mohli definovat foo, pokud chcete. 700 00:37:26,000 --> 00:37:30,000 Pokud jsem vytvořit zobrazení řadič nebo vytvořit třídu 701 00:37:30,000 --> 00:37:33,000 Mohu uvnitř této třídy slibu realizovat 702 00:37:33,000 --> 00:37:40,000 Některé z těchto metod, takže například v případě říci 703 00:37:40,000 --> 00:37:43,000 teď říká, že dělám slib vám, že uvnitř 704 00:37:43,000 --> 00:37:50,000 této třídy View Controller budu mít definice pro oba foo a bar. 705 00:37:50,000 --> 00:37:52,000 >> Proč je to užitečné? 706 00:37:52,000 --> 00:37:55,000 Mnoho komponent uvnitř iOS využít tohoto 707 00:37:55,000 --> 00:37:58,000 návrhový vzor tzv. delegaci, a to, co říká, že delegace 708 00:37:58,000 --> 00:38:01,000 je to, že se například, když se textové pole 709 00:38:01,000 --> 00:38:04,000 a tam jsou některé události, které by mohly být registrovány uvnitř mé textového pole, 710 00:38:04,000 --> 00:38:07,000 spíše než vytvoření samostatných akcí, co můžu udělat, je můžu říct 711 00:38:07,000 --> 00:38:10,000 delegát tohoto textového pole bude nějaký objekt. 712 00:38:10,000 --> 00:38:13,000 Když říkám, že je to delegát nyní to znamená, že 713 00:38:13,000 --> 00:38:16,000 pokud by nějaká událost byly vypáleny do textového pole 714 00:38:16,000 --> 00:38:18,000 spíše než k registraci nebo něco podobného, ​​že 715 00:38:18,000 --> 00:38:21,000 je to jen zavolá metodu na delegáta. 716 00:38:21,000 --> 00:38:24,000 Například, uvnitř mé textového pole mám metodu, když jsem stiskněte 717 00:38:24,000 --> 00:38:27,000 že provádí tlačítko v pravé dolní, 718 00:38:27,000 --> 00:38:30,000 a tak spíše než registrace obslužnou rutinu události, co můžu říct je 719 00:38:30,000 --> 00:38:34,000 textové pole, zde je objekt, který chci, abys volat metodu na 720 00:38:34,000 --> 00:38:37,000 Pokaždé, když někdo zmáčkne tlačítko Done, 721 00:38:37,000 --> 00:38:40,000 a to znamená, že objekt musí implementovat nějaký protokol 722 00:38:40,000 --> 00:38:45,000 , který říká, slibuji definovat, že udělal tlačítko akce, 723 00:38:45,000 --> 00:38:47,000 protože pokud to není define tuto metodu a stiskněte tlačítko Hotovo, 724 00:38:47,000 --> 00:38:49,000 pak to bude matoucí. 725 00:38:49,000 --> 00:38:55,000 >> Pojďme se podívat na příklad. 726 00:38:55,000 --> 00:38:58,000 Tady jsem prostě jedno textové pole, 727 00:38:58,000 --> 00:39:04,000 a jedna z vlastností tohoto textového pole nad zde na této pravé straně je delegát. 728 00:39:04,000 --> 00:39:06,000 To je vlastnost třídy. 729 00:39:06,000 --> 00:39:09,000 Co jsem udělal, je zde mohu kontrolovat kliknul, a já jsem vytáhl z tohoto místa sem 730 00:39:09,000 --> 00:39:13,000 k zobrazení řadič, a to říká, že nyní delegáta tohoto textového pole 731 00:39:13,000 --> 00:39:18,000 bude zobrazení řadič. 732 00:39:18,000 --> 00:39:20,000 To znamená, že když některé akce stane, spíše než registraci 733 00:39:20,000 --> 00:39:25,000 samostatné obslužné rutiny Chci, abys je poslal do delegáta. 734 00:39:25,000 --> 00:39:28,000 Nyní se pojďme podívat na mého názoru regulátoru. 735 00:39:28,000 --> 00:39:32,000 Uvnitř. Souboru h jsem slib. 736 00:39:32,000 --> 00:39:36,000 Slíbil jsem realizovat některé metody uvnitř tohoto protokolu 737 00:39:36,000 --> 00:39:38,000 názvem UITextFieldDelegate, a znovu, 738 00:39:38,000 --> 00:39:42,000 to je jen nějaký seznam některých věcí, které jsem si mohou vybrat implementovat. 739 00:39:42,000 --> 00:39:46,000 >> Kdybych sem v mém. M souboru, jsem implementoval jednu takovou metodu. 740 00:39:46,000 --> 00:39:49,000 Já jsem to nazval textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 protože to je to, co to bylo voláno v protokolu. 742 00:39:52,000 --> 00:39:57,000 A teď když jsem stiskněte tlačítko Done uvnitř tohoto textového pole 743 00:39:57,000 --> 00:40:00,000 to je to, co se děje, aby si zavolal, tak jsem se zaregistrovat obslužnou rutinu události. 744 00:40:00,000 --> 00:40:03,000 Připojil jsem delegáta, a vždy, když je vyhozen tato událost 745 00:40:03,000 --> 00:40:08,000 To je metoda, která bude zavolán, takže když jsem přišel sem do mého scénáře a spusťte jej, 746 00:40:08,000 --> 00:40:11,000 I když to načítání můžeme vidět, co to dělá. 747 00:40:11,000 --> 00:40:13,000 Na mé obrazovce mám 2 věci. 748 00:40:13,000 --> 00:40:16,000 Mám toto textové pole, a já mám tento štítek. 749 00:40:16,000 --> 00:40:19,000 Já prostě říkat Chci znění tohoto štítku 750 00:40:19,000 --> 00:40:23,000 se rovná co uživatel napsal v uvnitř textového pole. 751 00:40:23,000 --> 00:40:26,000 Tento další řádek tady je prostě metoda, která volám 752 00:40:26,000 --> 00:40:29,000 na textové pole, které říká, že chci, abys skrýt klávesnici. 753 00:40:29,000 --> 00:40:33,000 To je jen svévolné metoda, která Apple si vybral. 754 00:40:33,000 --> 00:40:38,000 >> Opět, než jsem udělal něco, co jsem musel zapojit všechno, tak jsem poprvé přišel sem. 755 00:40:38,000 --> 00:40:42,000 Z pohledu správce jsem přetáhněte ji do textového pole. 756 00:40:42,000 --> 00:40:46,000 Pustil jsem, a můžu vidět, že mohu tuto text vlastnost pole 757 00:40:46,000 --> 00:40:49,000 protože tady v kontroleru pohledu jsem definována vlastnost 758 00:40:49,000 --> 00:40:52,000 že je IBOutlet z textového pole. 759 00:40:52,000 --> 00:40:55,000 To říká, že můžu zapojit tuto vlastnost se 760 00:40:55,000 --> 00:40:59,000 do textového pole v mém uživatelském rozhraní. 761 00:40:59,000 --> 00:41:03,000 Teď, když jsem klepněte sem můžu začít psát. 762 00:41:03,000 --> 00:41:06,000 Nyní, když jsem klepněte na tlačítko Hotovo, že to bude střílet 763 00:41:06,000 --> 00:41:08,000 událost, která nyní mohu odpovědět. 764 00:41:08,000 --> 00:41:10,000 Žádné obslužné rutiny. 765 00:41:10,000 --> 00:41:13,000 To je, jak jsem reagovala na toto tlačítko Hotovo. 766 00:41:13,000 --> 00:41:15,000 Smysl? 767 00:41:15,000 --> 00:41:20,000 >> To není návrhový vzor, ​​který-se nemusí vůbec najít sami 768 00:41:20,000 --> 00:41:23,000 vytváření vlastní protokol, ale jen vím, že někteří 769 00:41:23,000 --> 00:41:27,000 různé iOS komponenty zaregistrujte události různými způsoby. 770 00:41:27,000 --> 00:41:29,000 Tlačítka, například, používat tyto IBActions. 771 00:41:29,000 --> 00:41:32,000 Textová pole, na druhé straně, se bude používat delegáty. 772 00:41:32,000 --> 00:41:36,000 Můžeme vidět a můžete se podívat všichni, že až uvnitř dokumentace. 773 00:41:36,000 --> 00:41:41,000 Mimochodem, je to vlastně tunu věcí UI postavené na systému iOS pro vás, 774 00:41:41,000 --> 00:41:46,000 tak například, jak jsem dělal, že říkají, že udělal v pravém dolním rohu 775 00:41:46,000 --> 00:41:48,000 je jsem si vybral toto textové pole. 776 00:41:48,000 --> 00:41:50,000 Přišel jsem sem. 777 00:41:50,000 --> 00:41:53,000 I posune dolů trochu se vrátit klíč, 778 00:41:53,000 --> 00:41:56,000 a můžu vlastně dělat to celou spoustu věcí, jako když chci, aby se říct, 779 00:41:56,000 --> 00:42:00,000 tísňového volání místo toho můžu udělat to, co je zcela náhodné, 780 00:42:00,000 --> 00:42:02,000 a já nevím, proč je tu vestavěný tísňového volání tlačítko, 781 00:42:02,000 --> 00:42:06,000 ale tam, říká tísňového volání v opravdu malých písmen. 782 00:42:06,000 --> 00:42:08,000 Tam máš. 783 00:42:08,000 --> 00:42:12,000 >> Rozhodně prozkoumat všechny tyto různé možnosti v iOS. 784 00:42:12,000 --> 00:42:14,000 Jakékoliv dotazy týkající se delegáti? 785 00:42:14,000 --> 00:42:18,000 Opět, stejně zajímavý design vzor, ​​který byste měli být vědomi. 786 00:42:18,000 --> 00:42:22,000 Dobře, pojďme další se podívat na tabulky výhledem. 787 00:42:22,000 --> 00:42:26,000 Tabulka pohled je v podstatě, že seznam položek, které je všude kolem v iOS. 788 00:42:26,000 --> 00:42:29,000 Když jste listovala všechny vaše kontakty, díváte se na 789 00:42:29,000 --> 00:42:34,000 nastavení stránky, a tento druh seznamu věcí, se nazývá zobrazení tabulky. 790 00:42:34,000 --> 00:42:37,000 Implementace zobrazení tabulky v iOS je velmi jednoduchý. 791 00:42:37,000 --> 00:42:41,000 Místo toho, aby si třídu, která sestupuje z tohoto UIViewController 792 00:42:41,000 --> 00:42:44,000 to, že jsme udělali, než my prostě potřebujeme říci, spíše než 793 00:42:44,000 --> 00:42:46,000 vše UIViewController se chci dělat, 794 00:42:46,000 --> 00:42:50,000 Říkám všechno UITableViewController se chci udělat, 795 00:42:50,000 --> 00:42:54,000 takže prostě přidává některé další věci, které jsou zcela pro nás udělal. 796 00:42:54,000 --> 00:42:58,000 Musíme udělat jen velmi málo, aby v podstatě vyplnit prázdná místa uvnitř v tabulce. 797 00:42:58,000 --> 00:43:02,000 >> Chcete-li zobrazit tabulku Potřebuji odpovědět na pár otázek. 798 00:43:02,000 --> 00:43:06,000 První otázka, kterou je třeba odpovědět, je, kolik úseky jsou v tabulce? 799 00:43:06,000 --> 00:43:08,000 Když jste listování kontakty aplikace, které si všimnete, že je to trochu 800 00:43:08,000 --> 00:43:12,000 pořádá As, pak máte BS, a budete mít tu malou dílčí záhlaví. 801 00:43:12,000 --> 00:43:14,000 Každý z nich je tzv. úsek. 802 00:43:14,000 --> 00:43:16,000 Můžete může, ale nemusí potřebovat tohle. 803 00:43:16,000 --> 00:43:19,000 První věc, kterou musíte udělat, je zavést metodu 804 00:43:19,000 --> 00:43:22,000 volal Tableview: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 To jednoduše vrátí, kolik sekcí máte, 806 00:43:25,000 --> 00:43:29,000 takže by to mohlo říct, vrátit jednu, pokud máte jednu velkou zobrazení tabulky. 807 00:43:29,000 --> 00:43:33,000 Další otázkou, která iOS potřebuje vědět, je, kolik řádků máte? 808 00:43:33,000 --> 00:43:36,000 Například, jste listovala zobrazení tabulky. 809 00:43:36,000 --> 00:43:39,000 Máte pevný počet písní, které hledáte na nebo pevně stanovený počet kontaktů. 810 00:43:39,000 --> 00:43:41,000 Pokud jste mě, samozřejmě, není to mnoho, 811 00:43:41,000 --> 00:43:44,000 a tak to je, jak iOS ví, kolik buněk pro zobrazení. 812 00:43:44,000 --> 00:43:46,000 >> Opět platí, že by to mohlo říct něco jako návrat 3. 813 00:43:46,000 --> 00:43:49,000 Můj stůl pohled má 3 řádky. 814 00:43:49,000 --> 00:43:52,000 Konečně, iOS potřebuje vědět, co každá buňka vypadá, 815 00:43:52,000 --> 00:43:54,000 tak co to vlastně bude dělat, je tuto metodu volat tady dole, 816 00:43:54,000 --> 00:43:57,000 Tento Tableview: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Bude to volání této metody na jednotlivé buňky uvnitř vašeho stolu. 818 00:44:01,000 --> 00:44:03,000 Jak to nevím, kolikrát to nazvat? 819 00:44:03,000 --> 00:44:06,000 No, řekla jsi ji uvnitř počtu řádků v oddílu. 820 00:44:06,000 --> 00:44:08,000 Budeme volat to na každém z našich buněk, 821 00:44:08,000 --> 00:44:11,000 a uvnitř to je místo, kde si můžete skutečně dělat věci, jako je 822 00:44:11,000 --> 00:44:16,000 nastavit text, nebo vám říci, co to trochu modré tlačítko na pravé straně dělá. 823 00:44:16,000 --> 00:44:19,000 Vzor pro získání těchto buněk, budeme používat tuto metodu 824 00:44:19,000 --> 00:44:22,000 volal dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C je ve skutečnosti velmi dobře známý pro absurdní délky jejich metody jmen, 826 00:44:29,000 --> 00:44:32,000 a to je opravdu pěkný případ v bodě příkladu. 827 00:44:32,000 --> 00:44:37,000 Co tato metoda dělá, je to jen říká, že chci, abys mi buňku. 828 00:44:37,000 --> 00:44:39,000 Jen něco iOS. 829 00:44:39,000 --> 00:44:41,000 Máte-li něco takového 100.000 skladeb na iPod 830 00:44:41,000 --> 00:44:45,000 Co iOS nechce udělat, je přidělit 100.000 buněk, 831 00:44:45,000 --> 00:44:48,000 protože pokud jste na vrcholu seznamu, co opravdu potřebujete přidělit paměť 832 00:44:48,000 --> 00:44:51,000 pro buňku, která je 99.000 řádků dolů? 833 00:44:51,000 --> 00:44:55,000 Ne, protože, jak jste posouvání můžete druh přidělit za pochodu. 834 00:44:55,000 --> 00:44:57,000 To je pro tebe udělal. 835 00:44:57,000 --> 00:44:59,000 Nemusíte se starat o všechny ty hloupé věci výkonu. 836 00:44:59,000 --> 00:45:02,000 Vše, co říkají, je volání této metody dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 a to říká, dobře, pokud potřebujete jdu vytvořit novou buňku pro vás. 838 00:45:06,000 --> 00:45:09,000 >> Ale pokud jste na dně tabulky a jste již přiděleno některé buňky 839 00:45:09,000 --> 00:45:12,000 v horní části tabulky, které jste opravdu nebudete potřebovat v dohledné době 840 00:45:12,000 --> 00:45:15,000 Já ti dám jednu z těch zpět namísto alokování nového, 841 00:45:15,000 --> 00:45:17,000 a tak to je pěkný výkon obavy. 842 00:45:17,000 --> 00:45:21,000 Nemusíte alokovat buňky sami. 843 00:45:21,000 --> 00:45:23,000 To bude vám zpět buňku. 844 00:45:23,000 --> 00:45:25,000 Bude to návrat k vám buňky objekt. 845 00:45:25,000 --> 00:45:28,000 Jakmile budete mít mobilní objekt, který můžete udělat věci k ní. 846 00:45:28,000 --> 00:45:32,000 Můžete nastavit text buňky s touto vlastností tzv. textový popisek. 847 00:45:32,000 --> 00:45:36,000 Můžete přidat tento šipku vpravo nebo jiným náhodným stuff 848 00:45:36,000 --> 00:45:41,000 s touto druhou majetku zvaného accessoryType, a tak dále, a tak dále. 849 00:45:41,000 --> 00:45:46,000 >> Pojďme se podívat na skutečně provádí zobrazení tabulky nyní. 850 00:45:46,000 --> 00:45:49,000 Když jsem vytvořil tento projekt 851 00:45:49,000 --> 00:45:53,000 spíše než říkat jediný pohled žádost Vlastně jsem sem přišel 852 00:45:53,000 --> 00:45:57,000 na master-detail aplikace, a tak v podstatě to odpovídá poštovní aplikace 853 00:45:57,000 --> 00:46:01,000 na iPad s pohledu na stůl vlevo a pak obsah na pravé straně. 854 00:46:01,000 --> 00:46:07,000 Na zařízení iPod nebo iPhone to bude odpovídat na jednu zobrazení tabulky. 855 00:46:07,000 --> 00:46:10,000 To je místo, kde jsem dostal startovací kód. 856 00:46:10,000 --> 00:46:13,000 >> Pojďme nejprve podívat na scénáři. 857 00:46:13,000 --> 00:46:15,000 To vše bylo pro mě udělal, v podstatě vytvořil. 858 00:46:15,000 --> 00:46:18,000 Tento navigační lišta mi ukázal, co příkladem buňka může vypadat jako, 859 00:46:18,000 --> 00:46:22,000 a můžu dvakrát klikněte, změňte název. 860 00:46:22,000 --> 00:46:25,000 Jakékoliv jiné UI obavy zvládnu tam. 861 00:46:25,000 --> 00:46:27,000 Hlavičkový soubor vypadá opravdu jednoduché. 862 00:46:27,000 --> 00:46:30,000 Spíše než, že tohle je UIViewController jsme nyní, že tohle je 863 00:46:30,000 --> 00:46:35,000 TableViewController, takže víme, že chceme volat všechny ty tabulky metody. 864 00:46:35,000 --> 00:46:38,000 Další Chci vytvořit vlastnost, která je bude zastupovat 865 00:46:38,000 --> 00:46:40,000 věci uvnitř mého stolu. 866 00:46:40,000 --> 00:46:43,000 Tato tabulka bude libovolně zobrazení 867 00:46:43,000 --> 00:46:46,000 seznam ovoce, a tak musím vytvořit nějaký pole 868 00:46:46,000 --> 00:46:49,000 ve kterém mohu vložit ovoce. 869 00:46:49,000 --> 00:46:52,000 Uvnitř mého implementačním souboru, první věc, co chci dělat 870 00:46:52,000 --> 00:46:55,000 je chci ujistit, že jsem inicializovat pole. 871 00:46:55,000 --> 00:46:58,000 >> Řekl jsem alloc init, vytvořil můj ovoce pole, 872 00:46:58,000 --> 00:47:03,000 a Přidám 4 věci k tomu, z nichž jedna je mnohem více kontroverzní než ostatní 3. 873 00:47:03,000 --> 00:47:06,000 A teď mám řadu velikosti 4. 874 00:47:06,000 --> 00:47:08,000 Jsme třepání do CS50. 875 00:47:08,000 --> 00:47:11,000 Nyní mám řadu velikosti 4. 876 00:47:11,000 --> 00:47:13,000 Teď jdu začít odpovědi na tyto otázky, a vlastně, 877 00:47:13,000 --> 00:47:16,000 když jsem vytvořil tuto aplikaci to vše bylo již pro mě udělal. 878 00:47:16,000 --> 00:47:19,000 Neměl jsem psát z počtu sekcí v zobrazení tabulky. 879 00:47:19,000 --> 00:47:22,000 To už tam byl, a já vyplní prázdná místa. 880 00:47:22,000 --> 00:47:24,000 Kolik oddíly mám? 881 00:47:24,000 --> 00:47:26,000 Jeden. Vše hotovo. 882 00:47:26,000 --> 00:47:28,000 Kolik řádků mám? 883 00:47:28,000 --> 00:47:31,000 No, já mám jeden řádek pro každou ovoce, tak tento počet 884 00:47:31,000 --> 00:47:34,000 je vlastnost jakéhokoliv pole, které říká, jak velký je to? 885 00:47:34,000 --> 00:47:36,000 To, kolik řádků mám. 886 00:47:36,000 --> 00:47:42,000 Nakonec, musím říct, co se každá buňka vypadá? 887 00:47:42,000 --> 00:47:46,000 Jdu říct dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Opět platí, že byl tento již napsán pro mě. 889 00:47:48,000 --> 00:47:51,000 Nechtěl jsem to udělat sám, a chci se dostat zpátky 890 00:47:51,000 --> 00:47:54,000 tato buňka na tomto místě. 891 00:47:54,000 --> 00:47:57,000 Pamatujte si, že voláme tuto stejnou metodou na každé buňce, 892 00:47:57,000 --> 00:48:01,000 a tento argument zde, tento argument indexPath, 893 00:48:01,000 --> 00:48:03,000 říká, že to, co řada jsem dovnitř 894 00:48:03,000 --> 00:48:05,000 Když řeknu, že indexPath.row tady 895 00:48:05,000 --> 00:48:09,000 to bude 0, pak to bude 1, pak to bude 2, a to tak vím 896 00:48:09,000 --> 00:48:11,000 co cell jsem v současné době zobrazování. 897 00:48:11,000 --> 00:48:15,000 Chci nastavit text buňky pomocí této vlastnosti textLabel 898 00:48:15,000 --> 00:48:19,000 jít dovnitř mé ovoce pole a dostat 899 00:48:19,000 --> 00:48:21,000 objekt odpovídající každého řádku. 900 00:48:21,000 --> 00:48:24,000 Pokud je to řetězec, já jsem teď stanovení 901 00:48:24,000 --> 00:48:28,000 vlastnost text na řetězec. 902 00:48:28,000 --> 00:48:30,000 Můžu udělat ještě jednu věc. 903 00:48:30,000 --> 00:48:32,000 Já se také zaregistrovat obslužnou rutinu události na každém z buněk, 904 00:48:32,000 --> 00:48:35,000 takže když jsem klepněte na každé z těchto buněk 905 00:48:35,000 --> 00:48:39,000 Tento didSelectRowAtIndexPath, to bude jen pro mě, 906 00:48:39,000 --> 00:48:42,000 tak jednoduše tím, že definuje to teď můžu zvládnout, co se děje 907 00:48:42,000 --> 00:48:46,000 když klepnete na buňku, a znovu, jsme kolem, ve kterém byla využit buněk 908 00:48:46,000 --> 00:48:50,000 takže můžeme znovu použít stejný obslužnou rutinu události pro všechny naše buňky. 909 00:48:50,000 --> 00:48:53,000 >> Opět, je to něco, iOS je na tom pro mě. 910 00:48:53,000 --> 00:48:55,000 Pojďme zobrazit další nepříjemné POPUP 911 00:48:55,000 --> 00:48:59,000 že prostě říká, že jste si vybral něco, kde to něco 912 00:48:59,000 --> 00:49:04,000 bude řádek objekt. 913 00:49:04,000 --> 00:49:10,000 Když spustím to, budu mít toto pěkné zobrazení tabulky 914 00:49:10,000 --> 00:49:14,000 jeden řádek pro každý z těchto druhů ovoce, a když jsem klepněte na jednu 915 00:49:14,000 --> 00:49:16,000 to mi říká, co se stalo. 916 00:49:16,000 --> 00:49:21,000 Smysl? 917 00:49:21,000 --> 00:49:24,000 Budujme trochu složitější z aplikace, 918 00:49:24,000 --> 00:49:28,000 stejně jako kliknutí jste si vybrali rajče je. 919 00:49:28,000 --> 00:49:31,000 Pěkné o Storyboarding 920 00:49:31,000 --> 00:49:35,000 je to nejen nepomůže nás Design obrazovek samostatně, 921 00:49:35,000 --> 00:49:38,000 je to také nám pomůže provázat celou naši aplikaci, 922 00:49:38,000 --> 00:49:42,000 takže konečný app budeme budova je to pěkná sportovní news reader, 923 00:49:42,000 --> 00:49:45,000 a tak to bude mít více obrazovek, a tak jsem si vlastně představují 924 00:49:45,000 --> 00:49:48,000 každý z těchto četných obrazovek na scénáři 925 00:49:48,000 --> 00:49:52,000 a mohu oddálit a vidět můj aplikace z vysoké úrovni. 926 00:49:52,000 --> 00:49:55,000 >> Chcete-li vytvořit nový element uvnitř mého scénáře 927 00:49:55,000 --> 00:49:59,000 je to opravdu jednoduché uvnitř Interface Builderu. 928 00:49:59,000 --> 00:50:01,000 Pokud chci přidat další obrazovku to, například, 929 00:50:01,000 --> 00:50:06,000 I může nejprve oddálit s pinch zoom, který Apple miluje tak moc, 930 00:50:06,000 --> 00:50:09,000 a tady dole, než jsem vyhledat tlačítko 931 00:50:09,000 --> 00:50:12,000 a já přetáhnete tlačítko 932 00:50:12,000 --> 00:50:15,000 když chci vytvořit novou obrazovku mohu skutečně jen drag and drop 933 00:50:15,000 --> 00:50:19,000 Celý pohled řadič, takže když jsem vybrat to, vytáhněte ho sem, 934 00:50:19,000 --> 00:50:23,000 hey, je tu další obrazovka, a tak nyní používá stejný storyboard soubor 935 00:50:23,000 --> 00:50:26,000 Můžu mít všech obrazovkách uvnitř mé aplikace, a mohu oddálit 936 00:50:26,000 --> 00:50:28,000 a vidět, jak se vzájemně ovlivňují. 937 00:50:28,000 --> 00:50:32,000 Ty nebudou ovlivňovat dosud. 938 00:50:32,000 --> 00:50:36,000 Způsob, jakým se tyto 2 obrazovky interakci je definovat vztahy. 939 00:50:36,000 --> 00:50:39,000 Můžete v podstatě říkají, že toto obrazovku, když stisknete toto tlačítko, 940 00:50:39,000 --> 00:50:42,000 Chci, abys snímek se k této nové obrazovky. 941 00:50:42,000 --> 00:50:44,000 To znamená, že je tento druh vztahu mezi 942 00:50:44,000 --> 00:50:46,000  první obrazovka a druhá obrazovka. 943 00:50:46,000 --> 00:50:49,000 Budete mít v podstatě šipku od tohoto tlačítka na druhé obrazovce 944 00:50:49,000 --> 00:50:53,000 říká, že když stisknete toto tlačítko, které tam chci jít. 945 00:50:53,000 --> 00:50:57,000 Stejně jako my ovládat klikli a přetáhnout do vymezení těchto zásuvek 946 00:50:57,000 --> 00:51:01,000 budeme dělat stejnou věc k definování těchto přejde. 947 00:51:01,000 --> 00:51:05,000 >> Uvidíme příklad pro to, a než jsme vlastně přechod 948 00:51:05,000 --> 00:51:08,000 z jedné obrazovky na druhou iOS je tak laskav, že volání této metody 949 00:51:08,000 --> 00:51:11,000 volal prepareForSegue, a to je místo, kde můžeme začít 950 00:51:11,000 --> 00:51:14,000 odesílání dat z jedné aplikace do druhé. 951 00:51:14,000 --> 00:51:17,000 V příkladu se chystáme podívat se na to bude v podstatě umožní nám 952 00:51:17,000 --> 00:51:20,000 filtrovat baseball týmy v ligách a divizích. 953 00:51:20,000 --> 00:51:23,000 Když jsem ji vybrat ligu, například, chci přechodu 954 00:51:23,000 --> 00:51:25,000 k mému dalšímu obrazovku, kde můžu zobrazit všechny divize 955 00:51:25,000 --> 00:51:27,000 v této lize nebo všech různých týmů. 956 00:51:27,000 --> 00:51:31,000 Potřebuji poslat na tuto obrazovku, co týmy, měli byste zobrazit. 957 00:51:31,000 --> 00:51:35,000 Chcete-li, že budu využít této metody zde. 958 00:51:35,000 --> 00:51:39,000 >> Nakonec, stejně náhodný bod na iOS. 959 00:51:39,000 --> 00:51:41,000 Pokud chcete ukládat data tam je to, čemu se říká základní údaje, 960 00:51:41,000 --> 00:51:44,000 což je vlastně docela složité s ním pracovat. 961 00:51:44,000 --> 00:51:47,000 Můžete také použít SQL k ukládání dat, 962 00:51:47,000 --> 00:51:51,000 které je opět pěkné, ale trochu na složitější straně pro práci s, 963 00:51:51,000 --> 00:51:55,000 ale iOS také podporuje tyto opravdu cool věci zvané vlastnictví seznamy, 964 00:51:55,000 --> 00:52:00,000 a seznam vlastností je jen soubor, který představuje klíč hodnota. 965 00:52:00,000 --> 00:52:03,000 Můžete definovat seznam klíčů, a ty říkají, že toto tlačítko se bude pole. 966 00:52:03,000 --> 00:52:06,000 Tento klíč bude řetězec, a v podstatě vše, co můžete dělat 967 00:52:06,000 --> 00:52:10,000 v JSON můžete udělat uvnitř seznamu vlastností, 968 00:52:10,000 --> 00:52:14,000 a tak to opravdu pěkně nám umožňuje pracovat s některými daty. 969 00:52:14,000 --> 00:52:18,000 Například, mám Teams.plist, že jsem vytvořil. 970 00:52:18,000 --> 00:52:22,000 Vytvořil jsem nový plist soubor, a mohu drill down. 971 00:52:22,000 --> 00:52:26,000 Toto je slovník, to je slovník, jsou řetězce, 972 00:52:26,000 --> 00:52:30,000 a tak to je pěkné grafické znázornění dokumentu JSON 973 00:52:30,000 --> 00:52:33,000 nebo jen soubor klíčových dvojic hodnot, 974 00:52:33,000 --> 00:52:37,000 a tak to je údaj, že budu pracovat s uvnitř mé aplikace. 975 00:52:37,000 --> 00:52:40,000 >> Podívejme se nejprve, pojď sem. Máme mnohem více souborů nyní. 976 00:52:40,000 --> 00:52:44,000 Ale pojďme se nejprve přijít sem do scénáře. 977 00:52:44,000 --> 00:52:48,000 Storyboard tady, když můžete oddálit, 978 00:52:48,000 --> 00:52:51,000 nyní můžeme vidět, že je to tok své aplikace. 979 00:52:51,000 --> 00:52:53,000 Já se nejprve, kdo na této obrazovce. 980 00:52:53,000 --> 00:52:55,000 Budu přecházet na tuto obrazovku, 981 00:52:55,000 --> 00:52:58,000 a budu přecházet na této obrazovce, a můžeme vidět, že když jsem trochu 982 00:52:58,000 --> 00:53:04,000 přesunout jeden z nich asi jsme tyto šipky jít odsud až sem, 983 00:53:04,000 --> 00:53:08,000 a jak jsem definovat, že šíp byl, kdybych přiblížit trochu, 984 00:53:08,000 --> 00:53:12,000 a když jsem přijít do tohoto pohledu regulátoru, 985 00:53:12,000 --> 00:53:16,000 a tady je buňka, a chci říct, že když klepnete na buňku 986 00:53:16,000 --> 00:53:18,000 Chci, abys klesat přes jinou obrazovku. 987 00:53:18,000 --> 00:53:21,000 Mohu jednoduše podržte kontrolu, 988 00:53:21,000 --> 00:53:26,000 Najeďte trochu, podržte kontrolu, přetáhněte tuto buňku nad a pustit. 989 00:53:26,000 --> 00:53:30,000 >> A tady říkáme, co je to přechod, který chcete použít? 990 00:53:30,000 --> 00:53:32,000 Chcete použít tento snímek věc, která se nazývá tlak? 991 00:53:32,000 --> 00:53:34,000 Chcete klouzat nahoru ze dna? 992 00:53:34,000 --> 00:53:36,000 Tomu se říká modální. 993 00:53:36,000 --> 00:53:40,000 A jednou jsem na jednu z nich, bude to kreslit na tuto šipku pro mě, 994 00:53:40,000 --> 00:53:44,000 a to znamená, že jsem vlastně ovládal, co se stane, když jsem stiskněte toto tlačítko graficky. 995 00:53:44,000 --> 00:53:48,000 Nechtěl jsem psát nějaký kód, aby skutečně sklouzla z jedné obrazovky na druhou. 996 00:53:48,000 --> 00:53:51,000 Definoval jsem to vizuálně uvnitř Interface Builderu. 997 00:53:51,000 --> 00:53:55,000 Kdybych klikněte na šipku, můžeme vidět, že jsem tuto věc jméno. 998 00:53:55,000 --> 00:53:59,000 Zavolal jsem to showDivisions, a je to tak, že jsem si vědět, 999 00:53:59,000 --> 00:54:03,000 co přechod má nastat, a uvidíme, proč jen na sekundu. 1000 00:54:03,000 --> 00:54:06,000 To je, jak jsem zapojen do různých obrazovek v mé aplikaci. 1001 00:54:06,000 --> 00:54:09,000 Pokud by se jednalo tlačítko, například, spíše než tabulka pohled, 1002 00:54:09,000 --> 00:54:11,000 Mohl bych řídit klikněte na tlačítko, přetáhněte ji na další obrazovku, 1003 00:54:11,000 --> 00:54:16,000 a to je, jak mohu udělat navigační takhle. 1004 00:54:16,000 --> 00:54:19,000 >> Opravdu rychle, když půjdeme do MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 znovu, jsme prostě bude definovat seznam věcí 1006 00:54:22,000 --> 00:54:26,000 , který se zobrazí v zobrazení tabulky. 1007 00:54:26,000 --> 00:54:29,000 Tady říkám chci, abys to plist soubor, 1008 00:54:29,000 --> 00:54:32,000 a chci vám umožní nahrát ji do slovníku, 1009 00:54:32,000 --> 00:54:35,000 a jakmile jste si, že slovník, budu odpovídat na tytéž otázky znovu. 1010 00:54:35,000 --> 00:54:37,000 Zde je počet úseků. 1011 00:54:37,000 --> 00:54:41,000 Za prvé, je tam jeden řádek pro každé ligy, a text každé buňce 1012 00:54:41,000 --> 00:54:46,000 musí být buď první, první liga, druhá liga, a tak dále. 1013 00:54:46,000 --> 00:54:51,000 Konečně, budu používat tuto metodu, která jsme právě viděli názvem prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 a to je metoda, která se bude vyhozen, když jsem klepněte na tlačítko 1015 00:54:54,000 --> 00:54:57,000 v jedné z těchto řádků, a proto aktivaci, že přechod 1016 00:54:57,000 --> 00:54:59,000 že jsem nastavit šipkami. 1017 00:54:59,000 --> 00:55:02,000 To říká, že můžu mít více 1018 00:55:02,000 --> 00:55:05,000 vztahy z jedné obrazovky na druhou. 1019 00:55:05,000 --> 00:55:08,000 Pokud mám 2 tlačítka a každé tlačítko se dostanete na jinou obrazovku 1020 00:55:08,000 --> 00:55:10,000 Budu mít 2 přejde, 1 pro každé tlačítko. 1021 00:55:10,000 --> 00:55:14,000 Ale to prepareForSegue je opět, bude znovu 1022 00:55:14,000 --> 00:55:17,000 pro každý z jednotlivých vztahů, tak to znamená, že jsem třeba způsob 1023 00:55:17,000 --> 00:55:21,000 identifikace, pokud stisknete první tlačítko nebo stisknutím druhého tlačítka. 1024 00:55:21,000 --> 00:55:25,000 >> Pamatuješ, když jsem dal, že SEGUE jméno, tento showDivisions, 1025 00:55:25,000 --> 00:55:29,000 to je, jak už vím, že je to segue, že byl aktivován. 1026 00:55:29,000 --> 00:55:32,000 Všechno, co chci udělat, je, že jsem chtěl říct 1027 00:55:32,000 --> 00:55:35,000 Chci zjistit, co já jsem jen udeřil, 1028 00:55:35,000 --> 00:55:38,000 a tak se dostat, že mohu říci, Chci indexPath pro vybraný řádek, 1029 00:55:38,000 --> 00:55:42,000 pamatovat indexPath jen říká, že tam, kde jsem kliknul, 1030 00:55:42,000 --> 00:55:47,000 a pak chci říci, že jsem chcete zjistit, kam jdu. 1031 00:55:47,000 --> 00:55:50,000 To destinationViewController, že je to vlastnost SEGUE. 1032 00:55:50,000 --> 00:55:53,000 To je obrazovka budu, 1033 00:55:53,000 --> 00:55:56,000 takže vím, že obrazovka budu se nazývá DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 protože jsem vytvořil tuto třídu, 1035 00:55:59,000 --> 00:56:02,000 a tak teď, když řeknu d.divisions 1036 00:56:02,000 --> 00:56:06,000 Já jsem teď nastavení vlastnost kontroleru pohledu jsem asi jít. 1037 00:56:06,000 --> 00:56:10,000 To je, jak jsem odesílání dat z jedné obrazovky na další obrazovku. 1038 00:56:10,000 --> 00:56:13,000 >> Jen při pohledu na tento DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 můžete vidět, že v. souboru h 1040 00:56:16,000 --> 00:56:20,000 je, že vlastnictví divize, a to je to, co jsem v podstatě naplněním, 1041 00:56:20,000 --> 00:56:25,000 tak to je, jak vím, že jsem zobrazení divize odpovídající 1042 00:56:25,000 --> 00:56:28,000 liga, která jsem kliknul, a znovu, 1043 00:56:28,000 --> 00:56:31,000 aktuální zobrazení tabulky vypadá skoro stejně, jen záznamník ty 1044 00:56:31,000 --> 00:56:34,000 3 jednoduché otázky, jakož i identifikační 1045 00:56:34,000 --> 00:56:37,000 co se stane, když se přesunete na další obrazovku. 1046 00:56:37,000 --> 00:56:40,000 Jen pár dalších věcí zde. 1047 00:56:40,000 --> 00:56:43,000 Všimnete si v horní zde, že spíše než říkat # include 1048 00:56:43,000 --> 00:56:45,000 Já jsem teď říkal # import. 1049 00:56:45,000 --> 00:56:47,000 To je jen Objective-C věc. 1050 00:56:47,000 --> 00:56:52,000 Import je v podstatě hezčí verze patří, 1051 00:56:52,000 --> 00:56:57,000 a například, potřebujeme vědět, co tato třída je, 1052 00:56:57,000 --> 00:57:00,000 tak jsem si prostě říct DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Pokud bychom neměli hashtag standardio.c uvnitř naší. Souboru c 1054 00:57:05,000 --> 00:57:07,000 kompilátor neměl tušení, co printf bylo. 1055 00:57:07,000 --> 00:57:12,000 Podobně, když nemám importovat DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 kompilátor opravdu nemá tušení, co je DivisionsViewController. 1057 00:57:16,000 --> 00:57:19,000 Jen se ujistěte, že uvnitř vašich různých. Souborů m byste se ujistit, import 1058 00:57:19,000 --> 00:57:25,000 odpovídající. h soubory tak, aby kompilátor ví, co se děje. 1059 00:57:25,000 --> 00:57:31,000 >> A konečně, co Apple nakonec se je zobrazovat některé údaje pomocí webového zobrazení, 1060 00:57:31,000 --> 00:57:35,000 a tak web pohled je objekt, ve kterém můžete vložit 1061 00:57:35,000 --> 00:57:37,000 Trochu webový prohlížeč uvnitř vaší aplikace. 1062 00:57:37,000 --> 00:57:40,000 Vše, co musíte udělat, je dodat URL do webového prohlížeče, 1063 00:57:40,000 --> 00:57:43,000 takže chci jet do mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 a to je, jak mohu získat přístup na domovskou stránku pro každý tým, 1065 00:57:46,000 --> 00:57:49,000 a tak předáním této adrese 1066 00:57:49,000 --> 00:57:52,000 web názor může zobrazovat to pro mě, a já jsem si procházet kolem, 1067 00:57:52,000 --> 00:58:01,000 a simulátor je používán, že jeden. 1068 00:58:01,000 --> 00:58:03,000 Nyní to přišlo z mého plist. 1069 00:58:03,000 --> 00:58:07,000 Kdybych Klepnutím na toto tlačítko to také přišlo z mého plist, a to posuvná byla zpracována 1070 00:58:07,000 --> 00:58:09,000 vymezením těchto přejde. 1071 00:58:09,000 --> 00:58:12,000 I Klepnutím na toto tlačítko a ještě jeden, 1072 00:58:12,000 --> 00:58:15,000 a teď tady je můj UIWebView, tak jen tak 1073 00:58:15,000 --> 00:58:19,000 Zde je webová stránka pro URL, které jsem vložené, 1074 00:58:19,000 --> 00:58:21,000 a já jsem nemusel zvládnout cokoli bláznivého. 1075 00:58:21,000 --> 00:58:24,000 To je, jak zobrazit webovou stránku. 1076 00:58:24,000 --> 00:58:27,000 Věci jako toto tlačítko zpět jsou zde také uvedeny na mě 1077 00:58:27,000 --> 00:58:33,000 zcela zdarma, protože jsem definovány tyto vztahy pomocí přejde. 1078 00:58:33,000 --> 00:58:37,000 >> Nějaké otázky? Jo. 1079 00:58:37,000 --> 00:58:40,000 [Student] Takže při použití přiřazení, už nikdy nebudete muset volného něco? 1080 00:58:40,000 --> 00:58:43,000 Přesně tak, když budete volat alloc a init nemusíte osvobodit ji. 1081 00:58:43,000 --> 00:58:46,000 IOS bude zvládnout všechny, že pro vás. 1082 00:58:46,000 --> 00:58:51,000 Je to úžasné, a nejste porušení žádná pravidla. Jo. 1083 00:58:51,000 --> 00:58:54,000 [Student] Pokud jste byli zahrnout více týmů, které by se vešly na obrazovku, 1084 00:58:54,000 --> 00:58:58,000 by to mít automaticky rolovací možnost, nebo je to něco, co potřebujete přidat? 1085 00:58:58,000 --> 00:59:01,000 Přesně, když měl více jednotek, například, by se automaticky zpracovávat 1086 00:59:01,000 --> 00:59:04,000 rolování pro mě, a všechny výkonnostní obavy 1087 00:59:04,000 --> 00:59:08,000 s obrovským stolem se také stará o zcela pro mě. 1088 00:59:08,000 --> 00:59:11,000 >> Další otázky? 1089 00:59:11,000 --> 00:59:13,000 Všechny tohoto kódu se bude vyslán. 1090 00:59:13,000 --> 00:59:16,000 My druh zamlouvají trochou více drobných detailů, 1091 00:59:16,000 --> 00:59:19,000 ale věci jako nastavení některých vlastností na web zobrazení 1092 00:59:19,000 --> 00:59:22,000 jsou jen věci, které můžete získat při prohlížení Apple dokumentaci, 1093 00:59:22,000 --> 00:59:24,000 což je opravdu, ale opravdu pěkně vyložil. 1094 00:59:24,000 --> 00:59:27,000 Mají spoustu ukázkových aplikací a příklad zvyklostem 1095 00:59:27,000 --> 00:59:34,000 různých API, takže určitě prohlédnout ty, pokud je to možné. 1096 00:59:34,000 --> 00:59:36,000 Jen některé užitečné odkazy budete chtít podívat na. 1097 00:59:36,000 --> 00:59:38,000 To jsou některé užitečné dokumentace příruček. 1098 00:59:38,000 --> 00:59:41,000 Adresy URL jsou masivní, takže jsou zkráceny. 1099 00:59:41,000 --> 00:59:44,000 To první je celá knihovna dokumentace. 1100 00:59:44,000 --> 00:59:46,000 Je tu málo vyhledávání bary, takže pokud začnete psát, tlačítko 1101 00:59:46,000 --> 00:59:50,000 začne dávat vám veškeré informace o všech věcí, které můžete dělat s tlačítkem. 1102 00:59:50,000 --> 00:59:53,000 Já jsem také na Zobrazit tabulku Programming Guide. 1103 00:59:53,000 --> 00:59:56,000 To se zabývá tabulky názory v mnohem podrobněji, 1104 00:59:56,000 --> 01:00:00,000 jak dělat věci, jako je dynamicky přidávat články nebo upravit buňky nebo odstranit. 1105 01:00:00,000 --> 01:00:02,000 >> Je tu spousta vzorových aplikací z Apple, který vám ukáže, jak to udělat, 1106 01:00:02,000 --> 01:00:05,000 a konečně, poslední z nich je Human Interface pokyny, 1107 01:00:05,000 --> 01:00:09,000 a to je v podstatě nějaká diskuze komponent uživatelského rozhraní, 1108 01:00:09,000 --> 01:00:12,000 věci jako nedělají tlačítko, které je 4 pixely od 4 bodů. 1109 01:00:12,000 --> 01:00:15,000 To je špatný nápad, a další věci, které Apple chce, abys 1110 01:00:15,000 --> 01:00:18,000 podporovat dobrý design. 1111 01:00:18,000 --> 01:00:23,000 >> Nějaká poslední otázky před tím, než skončit? 1112 01:00:23,000 --> 01:00:27,000 Dobře, určitě neváhejte, Jdeme mít speciální štítky na diskutovat. 1113 01:00:27,000 --> 01:00:30,000 Budeme mít iOS jeden, tak rozhodně neváhejte využít, že. 1114 01:00:30,000 --> 01:00:34,000 Pokud chcete pracovat se svými spolužáky na projektech 1115 01:00:34,000 --> 01:00:37,000 nebo pomoci zjistit nějaké náhodné iOS věci 1116 01:00:37,000 --> 01:00:40,000 neváhejte a napište mi, a určitě prostudovat všechny kód online, protože 1117 01:00:40,000 --> 01:00:43,000 právě v zájmu době jsme trochu utajeno více 1118 01:00:43,000 --> 01:00:45,000 jemnější detaily věcí. 1119 01:00:45,000 --> 01:00:47,000 Ale pokud ne, pak hodně štěstí na vašich projektech iOS, a doufám, že budeme mít 1120 01:00:47,000 --> 01:00:53,000 Velký příliv aplikací v App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]