1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminario] [iOS: Writing aplikaĵoj Kiel Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Universitato Harvard] 3 00:00:04,000 --> 00:00:08,000 [Jen CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Bone, ĉiuj, bonvenon al iOS: Writing aplikaĵoj kiel Boss. 5 00:00:12,000 --> 00:00:16,000 Tiu seminario tuj enfokusigi skribi apps por la iPhone 6 00:00:16,000 --> 00:00:19,000 kaj siavice skribas apps por la iPad, kaj tiel ni esence tuj marŝi tra 7 00:00:19,000 --> 00:00:23,000 paro malsamajn ekzemplojn de kiel fari programon, simpla ludo kiel Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 aŭ se vi estas pli interesata en fari programon kiel ia novaĵlegilo 9 00:00:26,000 --> 00:00:30,000 aŭ iu kiu interagas kun la Interreto mi parolos pri tio ankaŭ. 10 00:00:30,000 --> 00:00:32,000 Jen nia mallonga tagordo. 11 00:00:32,000 --> 00:00:36,000 >> IOS apps estas skribitaj en lingvo nomita Objective-C, 12 00:00:36,000 --> 00:00:39,000 kaj tiel ĉi tiu estas iom simila al C sed ne vere tute ne, 13 00:00:39,000 --> 00:00:41,000 do ni parolos iom pri la lingvo mem 14 00:00:41,000 --> 00:00:45,000 kaj poste kiel konstrui iPhone apps uzas ĉi tiun programon programo nomata Xcode, 15 00:00:45,000 --> 00:00:48,000 kion se vi ne elŝutis ĝin ankoraŭ bonvolu komenci la download nun. 16 00:00:48,000 --> 00:00:50,000 Estas pluraj gigabajtoj. 17 00:00:50,000 --> 00:00:54,000 Ĝi devus esti liberaj en la App Store, tiel vi devas havi Mac 18 00:00:54,000 --> 00:00:57,000 ideale kurante la lasta versio de VIN X. 19 00:00:57,000 --> 00:00:59,000 Se vi ne estas, ne estas problemo. 20 00:00:59,000 --> 00:01:02,000 Ni havas Mac en la scienco centro disponebla por via uzo 21 00:01:02,000 --> 00:01:05,000 kun Xcode instalita, do bonvolu uzi tiujn por la disvolviĝo. 22 00:01:05,000 --> 00:01:07,000 Se vi volas fari programon sed ne havas Mac, ne maltrankviliĝu. 23 00:01:07,000 --> 00:01:09,000 Ekzistas multe da kampuso rimedojn por tio. 24 00:01:09,000 --> 00:01:15,000 Kaj tiel poste ni iras al kovri 2 grandaj ekzemploj de malsamaj apps vi povas fari. 25 00:01:15,000 --> 00:01:19,000 Objective-C estas teknike kion nomas la super aro de C. 26 00:01:19,000 --> 00:01:24,000 Tio signifas, ke iu C-kodo estas ankaŭ valida Objective-C-kodo. 27 00:01:24,000 --> 00:01:29,000 Tio signifas ke ni ia tubo gravurita sur iu plia trajtojn al C. 28 00:01:29,000 --> 00:01:33,000 Kelkaj el tiuj karakterizaĵoj inkluzivas ne devi ĉiam skribi malloc denove, dank 'al Dio, 29 00:01:33,000 --> 00:01:36,000 neniu devi zorgi pri tiuj stultaj punteros kaj liberigante ilin kaj cxion, kio stuff 30 00:01:36,000 --> 00:01:40,000 vi malamis pri C, kaj ĝi estas speco de aligxo Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Nun, Objective-C havas ankaŭ multe pli granda norma biblioteko, 32 00:01:43,000 --> 00:01:47,000 do ekzistas multe pli funcionalidad vi ricevas senpage ene de Objective-C. 33 00:01:47,000 --> 00:01:50,000 Memoru kiam ni skribas PHP ni rimarkas ke ni iris de 34 00:01:50,000 --> 00:01:54,000 ĉi plej malgranda lingvo al la giganto biblioteko de cxiuj tiuj frenezaj aĵoj vi povas fari. 35 00:01:54,000 --> 00:01:56,000 La sama afero okazas en iOS. 36 00:01:56,000 --> 00:01:59,000 Estas celoj por aĵoj kiel la budhisma kalendaro, kaj vere ion 37 00:01:59,000 --> 00:02:05,000 vi povus pensi probable ekzistas jam en Objective-C de efektivigo. 38 00:02:05,000 --> 00:02:08,000 La objektivo parto de Objective-C estas referenco ion 39 00:02:08,000 --> 00:02:11,000 nomata objektema programado. 40 00:02:11,000 --> 00:02:14,000 Tio estas speco de nova koncepto, sed ni vere plejparte lernis 41 00:02:14,000 --> 00:02:17,000 multon el tiuj konceptoj jam. 42 00:02:17,000 --> 00:02:19,000 La ideo malantaŭ Objekto-Orientita Programado estas, ke vi tuj strukturi 43 00:02:19,000 --> 00:02:23,000 multon de viaj kodo ĉirkaŭ tion nomas klasoj, 44 00:02:23,000 --> 00:02:26,000 kaj ĉi tiuj klasoj estas vere gloris structs. 45 00:02:26,000 --> 00:02:30,000 Ene de struct ni esence diris ĉi tie estas io, 46 00:02:30,000 --> 00:02:32,000 kaj cxi tiu afero povas havi membrojn. 47 00:02:32,000 --> 00:02:35,000 Ekzemple, nodo en ligitaj listo povus esti aliaj aĵoj 48 00:02:35,000 --> 00:02:38,000 kiel valoro, puntero al la sekvanta nodo en la listo, 49 00:02:38,000 --> 00:02:44,000 kaj kune ke puntero kaj tiu valoro formis ĉi tiun petskribon de struct. 50 00:02:44,000 --> 00:02:47,000 Klasoj estas tre similaj escepte 51 00:02:47,000 --> 00:02:50,000 klasoj povas ankaŭ havi funkcioj ene de ili. 52 00:02:50,000 --> 00:02:54,000 Kiam ni deklaris struct, ni povus nur diri int n aŭ nodo * proksima. 53 00:02:54,000 --> 00:02:57,000 >> Nun kun Objective-C ni povas efektive metis funkcioj 54 00:02:57,000 --> 00:02:59,000 ene de tiuj aĵoj. 55 00:02:59,000 --> 00:03:03,000 Alia afero kiun klasoj povas fari estas ili povas heredi datumojn de aliaj klasoj. 56 00:03:03,000 --> 00:03:07,000 Ekzemple, ni povas rigardi faskon de primitivaj Objective-C klasoj. 57 00:03:07,000 --> 00:03:11,000 Unu el ili povus esti la klaso kiu reprezentas la vidpunkton por ekrano, 58 00:03:11,000 --> 00:03:14,000 kaj tiel dirante mi volas efektivigi mian propran vidpunkto 59 00:03:14,000 --> 00:03:18,000 ni esence diri iu super ĉe Apple, probable vere bela popolo, 60 00:03:18,000 --> 00:03:21,000 verkis klaso por mi, kaj ĝi manipulas aĵojn kiel montri butonoj 61 00:03:21,000 --> 00:03:25,000 aŭ prunti la ekrano, kaj ni estus vere malkontentigas 62 00:03:25,000 --> 00:03:28,000 apliki cxiuj funcionalidad ni mem, kaj tiel per simple 63 00:03:28,000 --> 00:03:31,000 heredi datumoj povas diri ĉion, kion vi faris en tiu klaso 64 00:03:31,000 --> 00:03:34,000 Mi ankaŭ volas interne de mia klaso, kaj tiam mi iros fari iu alia materialo, 65 00:03:34,000 --> 00:03:37,000 nome implementar programon. 66 00:03:37,000 --> 00:03:40,000 Tion tiu vorto heredaĵo signifas. Ni vidos pli konkretan ekzemplon. 67 00:03:40,000 --> 00:03:42,000 >> Kaj fine, la ŝlosilo kun celoj Orientita Programado estas ke 68 00:03:42,000 --> 00:03:45,000 ĝi kondukas al datumoj encapsulación. 69 00:03:45,000 --> 00:03:48,000 En iuj de nia problemo aroj ni povus havi tiujn granda, tutmonda variabloj 70 00:03:48,000 --> 00:03:51,000 kaj globals ĉie, kaj tiel estas kiel ni volas konservi trako de stato. 71 00:03:51,000 --> 00:03:55,000 Kun klasoj ni povas komenci encapsulando informo ene de objekto. 72 00:03:55,000 --> 00:03:58,000 Se ni havas unu ekrano en nia programo, ni ne vere bezonas havi neniun informon de 73 00:03:58,000 --> 00:04:01,000 alia ekrano en nia programo interne de tiu, 74 00:04:01,000 --> 00:04:04,000 kaj tiel per encapsulando aferoj ene klasoj ĉi reale kondukas 75 00:04:04,000 --> 00:04:08,000 tre bona kodo dezajno, kaj tio eblas kun iuj de la pliaj karakterizaj 76 00:04:08,000 --> 00:04:11,000 de Objective-C. 77 00:04:11,000 --> 00:04:15,000 Forewarning, la sintakson por Objective-C estas la bananoj. 78 00:04:15,000 --> 00:04:19,000 Ĝi estas kiel nenio ni vidis antaŭe, 79 00:04:19,000 --> 00:04:22,000 tial estas iom da de lernado kurbo alkutimiĝi al 80 00:04:22,000 --> 00:04:24,000 kion la heck tio signifas? 81 00:04:24,000 --> 00:04:27,000 Sed kiam oni sukcesis pasi tiun komencan lernado kurbo estas vere, vere glata 82 00:04:27,000 --> 00:04:29,000 komenci skribi apps. 83 00:04:29,000 --> 00:04:33,000 >> Deklari klaso, diri jen mia klaso, ĝi ekzistas, 84 00:04:33,000 --> 00:04:35,000 kaj eble tie estas iuj aferoj kiuj mi tuj difini poste, 85 00:04:35,000 --> 00:04:38,000 Mi intencis diri @ interfaco. 86 00:04:38,000 --> 00:04:41,000 Mi intencis diri @ interfaco. Mi tuj donos mia klaso nomon. 87 00:04:41,000 --> 00:04:43,000 Kaj poste en alia loko mi intencis diri @ fino, 88 00:04:43,000 --> 00:04:46,000 kaj ĉio en inter la @ interfaco kaj la @ end 89 00:04:46,000 --> 00:04:48,000 tuj estos mia klaso. 90 00:04:48,000 --> 00:04:51,000 Tio tuj estos kio estas interne de nia. H dosierojn. 91 00:04:51,000 --> 00:04:55,000 Samkiel en C nia. H dosieroj esence diris jen kelkaj aĵoj kiu ekzistas. 92 00:04:55,000 --> 00:04:57,000 Mi ne nepre diras al vi, kion ili faras ankoraux, 93 00:04:57,000 --> 00:04:59,000 sed la tradukilo bezonas scii ke ekzistas. 94 00:04:59,000 --> 00:05:04,000 Poste ene de nia. M dosieroj-ĉar m por Objective-C 95 00:05:04,000 --> 00:05:08,000 estas kie ni fakte tuj difini kio tiuj klasoj fari. 96 00:05:08,000 --> 00:05:11,000 Same kiel nia. C dosieroj, ni havigis efektivigo por funkcioj. 97 00:05:11,000 --> 00:05:15,000 Ene de nia. M dosieron nin tuj diros tie estas kion ĉiuj funkcioj 98 00:05:15,000 --> 00:05:18,000 interne de mia klaso-kion ili ĉiuj faras. 99 00:05:18,000 --> 00:05:22,000 Kaj fine, ene de struct ni povus diri ene de tiuj buklaj krampoj 100 00:05:22,000 --> 00:05:25,000 int n aŭ nodo * proksima, 101 00:05:25,000 --> 00:05:28,000 kaj en Objective-C nin tuj uzi la ŝlosilvorto @ proprieto, 102 00:05:28,000 --> 00:05:31,000 kaj ĉi tiu estas kio okazas al difini la bienoj, 103 00:05:31,000 --> 00:05:36,000 aŭ la ne-funkcioj kiu estas parto de mia klasoj. 104 00:05:36,000 --> 00:05:40,000 >> Nomante funkcioj en Objective-C estas ankaŭ bananoj. 105 00:05:40,000 --> 00:05:43,000 Kiam ni deklaris funkcioj en C ni diris ion kiel int foo 106 00:05:43,000 --> 00:05:46,000 kaj malferma paren kaj poste donis ĝin listo de argumentoj. 107 00:05:46,000 --> 00:05:51,000 Jen kion deklaras metodoj aŭ funkcioj aspektas kiel en Objective-C. 108 00:05:51,000 --> 00:05:54,000 Se mi volas deklari funkcio aŭ metodo 109 00:05:54,000 --> 00:05:58,000 kie mi estas diranta metodo estas vere nur funkcio kiu estas membro de klaso, 110 00:05:58,000 --> 00:06:01,000 do speco de interŝanĝeblaj, sed ne vere, 111 00:06:01,000 --> 00:06:03,000 tiel interne de mia metodo Mi volas krei novan metodon. 112 00:06:03,000 --> 00:06:06,000 Oni tuj revenos nenio, por kio okazas al esti de tipo malplena. 113 00:06:06,000 --> 00:06:08,000 Ĉi tiu estas la reveno tipo de mia funkcio. 114 00:06:08,000 --> 00:06:11,000 Nun ni havas parens tie ĉar-mi ne scias. 115 00:06:11,000 --> 00:06:14,000 Sekva tuj estos la nomo de mia funkcio, 116 00:06:14,000 --> 00:06:17,000 kaj tiam fine ni havas punktokomo samkiel ni havis en C. 117 00:06:17,000 --> 00:06:19,000 Kio estas nova ĉi tie estas ĉi ulo tie. 118 00:06:19,000 --> 00:06:22,000 Tiu skripto estas reale necesa, kaj kion tiu diras estas ke 119 00:06:22,000 --> 00:06:26,000 ĉi tiu metodo ĉi tie devas tuŝi petskribon de klaso. 120 00:06:26,000 --> 00:06:29,000 >> Post kiam ni deklaris nian structs ni probable diris ion kiel 121 00:06:29,000 --> 00:06:32,000 struct nodo n, kaj ke en la praktiko kreis 122 00:06:32,000 --> 00:06:35,000 aŭ instantiated unu el tiuj structs tiel ke mi povis efektive komenci labori 123 00:06:35,000 --> 00:06:38,000 kun kio estas interne de gxi, tial ĉi haltostreko signifas ke ni devas 124 00:06:38,000 --> 00:06:41,000 instantiate la klaso nur kiel ni instantiated ke struct 125 00:06:41,000 --> 00:06:43,000 antaŭ ol ni povas nomi tiun metodon sur ĝi. 126 00:06:43,000 --> 00:06:46,000 Se mi volas komenci aldonante argumentojn por mia metodoj 127 00:06:46,000 --> 00:06:48,000 alvenas ankoraŭ pli bananoj. 128 00:06:48,000 --> 00:06:50,000 Jen mia metodo nomo. 129 00:06:50,000 --> 00:06:53,000 Tiam mi tuj devos dupunkto, kaj post tiu dupunkto diras tie venas iuj argumentoj. 130 00:06:53,000 --> 00:06:56,000 Ĉi tiu metodo prenas unu argumento. 131 00:06:56,000 --> 00:06:59,000 La tipo de ĝia argumento estas int, kaj la nomo de tiu argumento 132 00:06:59,000 --> 00:07:03,000 aŭ la variablo kiun mi tuj komencos uzi ene de la metodo estas nomita mi. 133 00:07:03,000 --> 00:07:05,000 Denove, tio estas metodo. Ĝi prenas unu argumento. 134 00:07:05,000 --> 00:07:10,000 >> Se vi volas komenci aldonante pli argumentoj alvenas pli bananoj 135 00:07:10,000 --> 00:07:13,000 en kiun ni ĉi dupunkto kiu diras tie venas mia listo de argumentoj. 136 00:07:13,000 --> 00:07:15,000 Ĉi tiu unua argumento estas entjero. 137 00:07:15,000 --> 00:07:17,000 Nun, ĉi tiu dua argumento estas interesa. 138 00:07:17,000 --> 00:07:20,000 La variablo, ke mi tuj uzos interne de mia funkcio 139 00:07:20,000 --> 00:07:23,000 nomas f, tiel interne de mia funkcio mi povus diri 140 00:07:23,000 --> 00:07:25,000 f + = 1 aŭ io. 141 00:07:25,000 --> 00:07:30,000 Tion ĉi tie estas esence ŝlosilo por tiu argumento aŭ parametro. 142 00:07:30,000 --> 00:07:34,000 Samkiel ni havis ŝlosilan valoron paroj kaj iu kiel JSON aŭ asociaj tabeloj 143 00:07:34,000 --> 00:07:37,000 Objective-C faris la decidon por diri, bone, nur tial, ke ĝi estas vere klaraj 144 00:07:37,000 --> 00:07:39,000 kiam vi nomas metodo kio ĉiuj ĉi tiuj parametroj estas 145 00:07:39,000 --> 00:07:41,000 Mi vere tuj citi ilin cxiujn. 146 00:07:41,000 --> 00:07:45,000 Kiam vi nomas metodon, vi vere diras andFloat, 147 00:07:45,000 --> 00:07:47,000 kaj tiam vi pasos ĝin in 148 00:07:47,000 --> 00:07:50,000 >> Interese, ĉi tiu ne estas nomata, sed ĉiuj el la aliaj parametroj estas, 149 00:07:50,000 --> 00:07:53,000 do se ni havis 3-a argumento mi povus diri andFloat 150 00:07:53,000 --> 00:07:56,000 kaj alia kaleŝego kaj tiel plu. 151 00:07:56,000 --> 00:08:01,000 Kiam mi vokas tiujn metodojn estas kompreneble bananoj, 152 00:08:01,000 --> 00:08:04,000 do se mi havas objekton, kaj mi difinis metodo nomata foo, 153 00:08:04,000 --> 00:08:09,000 kaj mi volas nomi ĝin, anstataŭ diri foo malferma / proksime parens 154 00:08:09,000 --> 00:08:11,000 Mi tuj malfermi krampo. 155 00:08:11,000 --> 00:08:13,000 Jen la nomo de mia metodo. 156 00:08:13,000 --> 00:08:17,000 Mi tuj fermos la krampo, kaj ĉi tiu estas la objekto mi nomante ĝin. 157 00:08:17,000 --> 00:08:20,000 Memoru, ĉiuj tiuj manieroj ekzisti ene klasoj 158 00:08:20,000 --> 00:08:23,000 ĉar klasoj povas havi metodoj difinitaj interne de ili. 159 00:08:23,000 --> 00:08:26,000 >> Jen mi arbitre kreis objekto de iu klaso, 160 00:08:26,000 --> 00:08:28,000 kaj ĉi tiu estas la sintakson por fari tion. 161 00:08:28,000 --> 00:08:31,000 Estas 2 paŝoj al krei objekton. 162 00:08:31,000 --> 00:08:34,000 La unua paŝo estas mi volas destini spaco. 163 00:08:34,000 --> 00:08:37,000 Ĉi tiu estas la ekvivalento de malloc. Ni ne devas diri malloc plu. 164 00:08:37,000 --> 00:08:42,000 Ni faligis la m, faris alloc, kaj anstataŭis la. C kun. M. 165 00:08:42,000 --> 00:08:47,000 Post kiam ni alloc ion ni tiam bezonos pravalorizi ĝin. 166 00:08:47,000 --> 00:08:49,000 Esence, kiam vi kreas objektojn vi eble volas havi iun logiko 167 00:08:49,000 --> 00:08:53,000 kiu ekzekutas kiam ili estas kreitaj, por ke vi povu pasi en iuj aprioraj valoroj 168 00:08:53,000 --> 00:08:57,000 aŭ io simila, kaj tiel ĉi init metodo estas kio vere kreas la objekto. 169 00:08:57,000 --> 00:08:59,000 Ni unue atribui spaco, samkiel ni faris en C, 170 00:08:59,000 --> 00:09:04,000 kaj poste ni pravalorizi ĝin, kio povas aŭ ne fari tutan tre. 171 00:09:04,000 --> 00:09:07,000 Tiam ni revenas tiun aferon en objekto o. 172 00:09:07,000 --> 00:09:09,000 Estas stelo tie ĉar ĉi tiu estas teknike pointer, 173 00:09:09,000 --> 00:09:12,000 sed ne maltrankviliĝu, punteros ne tiu granda traktadon en Objective-C plu. 174 00:09:12,000 --> 00:09:15,000 >> Nun ni instantiated tiu klaso nomis NSObject, 175 00:09:15,000 --> 00:09:19,000 kaj ĉi tiu estas nur hazarda klaso kiu Apple havas. 176 00:09:19,000 --> 00:09:22,000 Ni instantiated ĉi, kaj nun mi havas petskribo de ĉi tiu klaso 177 00:09:22,000 --> 00:09:25,000 en ĉi tiu objekto o, por ke signifas, ke se mi difinis 178 00:09:25,000 --> 00:09:29,000 ĉi tiuj metodoj mi povis nomi ilin kiel ĉi tio. 179 00:09:29,000 --> 00:09:31,000 Simile, se mi volis nomi metodo per unu argumento, 180 00:09:31,000 --> 00:09:34,000 do ĉi tiu estas la trinkejo metodo, kiu prenas unu argumenton, 181 00:09:34,000 --> 00:09:38,000 kaj jen estas la baz: qux metodo, do ĉi prenas 2 argumentojn. 182 00:09:38,000 --> 00:09:44,000 Ĉi tiu estas vokas unu funkcio sur tiu objekto o. 183 00:09:44,000 --> 00:09:46,000 Sencon? 184 00:09:46,000 --> 00:09:50,000 La sintakso devus sencon, sed vi ia alkutimiĝi al ĝi. 185 00:09:50,000 --> 00:09:54,000 >> Konsentite, ni parolu pri kelkaj aĵoj kiuj estas konstruitaj en Objective-C 186 00:09:54,000 --> 00:09:56,000 kiuj ne nepre konstruita en C. 187 00:09:56,000 --> 00:09:59,000 En C ni ia devis trakti ĉenojn kiel tiuj stultaj karaktero arrays, 188 00:09:59,000 --> 00:10:01,000 kaj ĝi alvenis vere tedas. 189 00:10:01,000 --> 00:10:04,000 Objective-C havas tiuj ĉiuj konstruitaj en por ni, kaj ĝi estas konstruita en 190 00:10:04,000 --> 00:10:06,000 uzante ĉi tiu klaso nomis NSString. 191 00:10:06,000 --> 00:10:10,000 Kiam mi volas krei NSString ni havas pli arcano sintakso. 192 00:10:10,000 --> 00:10:15,000 Anstataŭ diri "cs50" ni diru @ "cs50" 193 00:10:15,000 --> 00:10:17,000 kaj ĉi tiu estas nur la sintakson por deklari kordoj en Objective-C. 194 00:10:17,000 --> 00:10:21,000 Estas ege facile forgesas, kio ne. 195 00:10:21,000 --> 00:10:24,000 Nun, kiam mi havas ĉi tio, ĉi tiu estas ĉeno, sed rimarki 196 00:10:24,000 --> 00:10:26,000 estas vere nur objekto. 197 00:10:26,000 --> 00:10:30,000 Mi diris NSString, kio signifas Mi instantiated la klaso 198 00:10:30,000 --> 00:10:32,000 vokis NSString, kiu iu alia skribis por mi, 199 00:10:32,000 --> 00:10:35,000 kaj ili estis tre agrabla pri ĝi, kaj tial nun 200 00:10:35,000 --> 00:10:37,000 Mi povas komenci nomante metodoj sur ĝi. 201 00:10:37,000 --> 00:10:40,000 Se mi nomas la metodon length sur ĉi objekto j 202 00:10:40,000 --> 00:10:43,000 ĝi estas tuj revenos al mi la longo de la kordo. 203 00:10:43,000 --> 00:10:45,000 Tiu estas ĝuste kiel strlen en C. 204 00:10:45,000 --> 00:10:47,000 Tiu revenus 4. 205 00:10:47,000 --> 00:10:51,000 >> Simile, alia metodo Mi eble volas zorgi pri estas ĉi characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Tiu estas metodo kiu diras pri tiu ĉeno s 207 00:10:54,000 --> 00:10:57,000 Mi volas ke vi akiri la nula karaktero, 208 00:10:57,000 --> 00:10:59,000 kaj tiel ĉi revenus al mi la karaktero c, 209 00:10:59,000 --> 00:11:02,000 kaj jen mia tuta amaso pli da tiuj metodoj kiu vi povas Google vere facile. 210 00:11:02,000 --> 00:11:07,000 Apple dokumentado estas granda, kaj ni rigardu, ke en iom. 211 00:11:07,000 --> 00:11:09,000 Tiuj estas ŝnuroj. 212 00:11:09,000 --> 00:11:11,000 Ni ankaŭ ŝanĝiĝema grandeco arrays konstruis in 213 00:11:11,000 --> 00:11:13,000 Memoru en C, kiam ni deklaris tabelo 214 00:11:13,000 --> 00:11:16,000 ni devis diri ke vi havas 5 elementoj, fino de historio. 215 00:11:16,000 --> 00:11:18,000 Kiam ni alvenis al JavaScript kaj PHP ni povus starti 216 00:11:18,000 --> 00:11:20,000 fari tion kiel aldoni elementoj aŭ movanta elementoj. 217 00:11:20,000 --> 00:11:22,000 Ni povas fari la samon en Objective-C. 218 00:11:22,000 --> 00:11:26,000 Anstataŭ krei tabelo en la normala C vojo 219 00:11:26,000 --> 00:11:30,000 ni havas denove alian klason nomita NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Ekzistas ankaux NSArray, 221 00:11:33,000 --> 00:11:35,000 kaj ĉi tiu tuj esence encapsular iu tabelo. 222 00:11:35,000 --> 00:11:38,000 Ĉi tio diras la unua afero, kiun mi volas fari estas mi volas destini 223 00:11:38,000 --> 00:11:41,000 spaco por nova tabelo, kaj post Mi rezervu ĝin 224 00:11:41,000 --> 00:11:43,000 Mi tiam devas pravalorizi ĝin. 225 00:11:43,000 --> 00:11:45,000 Denove, simple nomi tiuj 2 metodoj. 226 00:11:45,000 --> 00:11:48,000 Nun ĉi tio signifas ke ene de ĉi tiu celo oni 227 00:11:48,000 --> 00:11:50,000 Mi malplenan tabelo sidas tie. 228 00:11:50,000 --> 00:11:54,000 Se mi volas aldoni ion al ĉi tiu tabelo, mi povas nomi la addObject metodo. 229 00:11:54,000 --> 00:11:59,000 Mi volas aldoni objekto al la tabelo al, kaj mi volas aldoni la kordo CS50. 230 00:11:59,000 --> 00:12:02,000 Se mi volis male forigi ke mi povas diri mi volas 231 00:12:02,000 --> 00:12:09,000 forigi la objekto en la unua loko en la tabelo aŭ kontesti al. 232 00:12:09,000 --> 00:12:11,000 >> Sencon? 233 00:12:11,000 --> 00:12:14,000 Okay, vi ia alkutimiĝi al ĉi kvadrata krampo afero. 234 00:12:14,000 --> 00:12:18,000 Per la vojo, ene de tre Apple bibliotekoj vi vidos ĉi NS. 235 00:12:18,000 --> 00:12:21,000 La NS efektive staras por sekva paŝo, kiu estis unu de Steve Jobs unuaj entreprenoj, 236 00:12:21,000 --> 00:12:24,000 kaj tie estas kie li vere komencis skribi multon de la kodo 237 00:12:24,000 --> 00:12:27,000 kiel speco de la bazo por Mac OS X kaj ĉiuj aliaj aĵoj, 238 00:12:27,000 --> 00:12:32,000 kaj tiel ĉi NS estas speco de ĉi bela legaco krii al unu el la unuaj firmaoj 239 00:12:32,000 --> 00:12:34,000 reen kiam Apple estis ĵus. 240 00:12:34,000 --> 00:12:36,000 Estas ĉie. 241 00:12:36,000 --> 00:12:41,000 Ni rigardu pli tuteca Objective-C ekzemplo. 242 00:12:41,000 --> 00:12:44,000 Jen mi estas interne de Xcode. 243 00:12:44,000 --> 00:12:47,000 Al preni tie, mi unue elŝutita Xcode de la App Store, 244 00:12:47,000 --> 00:12:50,000 malfermis ĝin, kaj poste mi supreniris tie por dosiero, 245 00:12:50,000 --> 00:12:54,000 super ĉi tie por nova, kaj tiam projekto. 246 00:12:54,000 --> 00:12:57,000 Post kiam mi fari tion mi havas ĉiujn tiujn eblojn de kion mi volas krei, 247 00:12:57,000 --> 00:12:59,000 kaj tiel ni rigardu tiujn eblojn poste, 248 00:12:59,000 --> 00:13:03,000 sed nur por ĉi tiu ekzemplo, ĉar ni ne vere tuj havos programo ankoraux, 249 00:13:03,000 --> 00:13:06,000 Mi venis ĉi tien, kaj mi diris Komando Linio Ilo, 250 00:13:06,000 --> 00:13:09,000 kaj ĉi tiu estas programo, kiun mi povus kuri al la komanda linio 251 00:13:09,000 --> 00:13:12,000 samkiel ni estis kuranta de C. 252 00:13:12,000 --> 00:13:16,000 Tiel estas kiel mi kreis ĉi tiun projekton, kaj nun mi estas tie ĉi, 253 00:13:16,000 --> 00:13:20,000 do ni unue rigardu tiun dosieron, kaj tiu devus aspekti bela familiara. 254 00:13:20,000 --> 00:13:24,000 Mi havas int nomo. Jen mia amiko argc, mia alia amiko argv. 255 00:13:24,000 --> 00:13:30,000 Kaj tiel ni povas vidi ke tiu estas la punkto de eniro por mia unua Objective-C apliko. 256 00:13:30,000 --> 00:13:32,000 Ĉi tie ni povas ignori tion por nun. 257 00:13:32,000 --> 00:13:35,000 Tio estas esence iu memoro mastrumado stuff ke vi ne faros vere 258 00:13:35,000 --> 00:13:37,000 iam devas maltrankviligi. 259 00:13:37,000 --> 00:13:39,000 >> Ni rigardu ĉi unua bloko tie. 260 00:13:39,000 --> 00:13:46,000 Ĉi tiu unua linio, se mi diros Studenta * alice = [[Studenta alloc] init] kio estas tio faras? 261 00:13:46,000 --> 00:13:50,000 Ĉi tiu unua studento tie, tio estas probable klaso. 262 00:13:50,000 --> 00:13:54,000 Ĉi tio ne estas klaso ke Apple skribis, sed estas klaso kiu mi skribis. 263 00:13:54,000 --> 00:13:57,000 La unua afero Mi volas fari estas mi volas destini spaco por nova lernanto, 264 00:13:57,000 --> 00:14:00,000 kaj tiam Mi volas pravalorizi, do ĉi tiu donas al mi 265 00:14:00,000 --> 00:14:05,000 tiu nova studento objekto, kaj mi provizon ĉi en variablo nomata Alice. 266 00:14:05,000 --> 00:14:07,000 Kien tiu klaso venis? 267 00:14:07,000 --> 00:14:12,000 Nu, ĉi tie en la maldekstra flanko tiuj estas ĉiuj la malsamaj dosieroj ene de mia projekto. 268 00:14:12,000 --> 00:14:16,000 Ni povas vidi ĉi tie mi havas Student.h kaj Student.m. 269 00:14:16,000 --> 00:14:20,000 La. H dosiero, memoras, kie mi rakontu pri cxiuj el la aĵoj 270 00:14:20,000 --> 00:14:22,000 kiu ekzistas ene de la klaso. 271 00:14:22,000 --> 00:14:25,000 >> Ni rigardu tion. 272 00:14:25,000 --> 00:14:29,000 Bone, ĉi tie ni havas ĉi @ interfaco, kaj ĉi diras ke tie venas 273 00:14:29,000 --> 00:14:33,000 la deklaroj de ĉiu kiu ekzistas ene mia klaso. 274 00:14:33,000 --> 00:14:36,000 Tiam mi havas dupunkto. Tiam mi havas ĉi NSObject afero. 275 00:14:36,000 --> 00:14:40,000 Ĉi dupunkto signifas ke posedajxo iom ni diskutis iom pli frue. 276 00:14:40,000 --> 00:14:43,000 Ĉi tio diras ĉiun NSObject povas fari 277 00:14:43,000 --> 00:14:46,000 kie NSObject estas ĉi klaso verkita de iu alia, 278 00:14:46,000 --> 00:14:50,000 ĉio ĉi NSObject povas fari mi volas povi fari tion. 279 00:14:50,000 --> 00:14:54,000 Dirante: NSObject tio signifas ke mi esence 280 00:14:54,000 --> 00:14:58,000 heredis tuta funcionalidad de alia klaso. 281 00:14:58,000 --> 00:15:02,000 Tio vere donis min tutan faskon da malsamaj metodoj kaj propraĵoj ke mi povas uzi. 282 00:15:02,000 --> 00:15:05,000 Cxi tie mi krei 2 propraĵoj. 283 00:15:05,000 --> 00:15:08,000 Tio signifas mia studento, se ĉi estis struct, tiuj estus la 2 aferoj 284 00:15:08,000 --> 00:15:11,000 interne de mia struct, do ĉiu studento havas nomon 285 00:15:11,000 --> 00:15:14,000 ke estas linio, kaj studento ankaŭ havas rangon, 286 00:15:14,000 --> 00:15:17,000 kiu estas int. 287 00:15:17,000 --> 00:15:23,000 >> Fine, cxi tie mi iros por krei metodon por mia lernanto. 288 00:15:23,000 --> 00:15:26,000 Mi vokis Mian metodo, initWithName, kaj ĝi prenas unu argumenton, 289 00:15:26,000 --> 00:15:31,000 kaj tiu argumento estas ĉeno, kaj mi donis al gxi la nomon. 290 00:15:31,000 --> 00:15:35,000 Nun ni rigardu kiom ni efektive implementado ĉi tiu klaso. 291 00:15:35,000 --> 00:15:38,000 Jen, nun mi estas interne de mia. M dosiero, 292 00:15:38,000 --> 00:15:40,000 m por efektivigo, mi supozas. 293 00:15:40,000 --> 00:15:44,000 Mi havas mian efektivigo, mia fino, kaj tie estas kie mi fakte difinanta 294 00:15:44,000 --> 00:15:47,000 kio initWithName faras. 295 00:15:47,000 --> 00:15:50,000 Mi havas initWithName, la nomo de mia parametro, kaj poste tiu 296 00:15:50,000 --> 00:15:53,000 estas kie mi efektive kreante studento, 297 00:15:53,000 --> 00:15:56,000 kaj tiel ĉi tiu estas iomete kripta, sed ĉi tiu estas speco de Boilerplate 298 00:15:56,000 --> 00:15:58,000 ke vi volas inkludi en vian constructores. 299 00:15:58,000 --> 00:16:02,000 Ĉi inicialización funkcio ĉi tie, initWithName, estas tipo de konstruilo. 300 00:16:02,000 --> 00:16:05,000 Vi esence konstruanta nova studento objekto 301 00:16:05,000 --> 00:16:07,000 kaj eble sendi iuj datumoj ene de ĝi. 302 00:16:07,000 --> 00:16:11,000 La unua afero Mi volas fari estas mi volas nomi init sur ĉi tiu super afero. 303 00:16:11,000 --> 00:16:15,000 >> Memoru ke kiam mi diris ĉi tien en la. H dosieron 304 00:16:15,000 --> 00:16:21,000 ke ĉiun NSObject havas studento ankaŭ havas. 305 00:16:21,000 --> 00:16:24,000 Tio signifas, kiam mi kreos studento kion mi ankaŭ bezonas fari estas 306 00:16:24,000 --> 00:16:28,000 Certigi ke la NSObject ke mi heredi ĉiuj kiuj datumojn de 307 00:16:28,000 --> 00:16:32,000 ankaŭ inicializado konvene. 308 00:16:32,000 --> 00:16:36,000 Kion mi devas diri estas ĉi tiu super fakte tuj raporti al la patro klaso 309 00:16:36,000 --> 00:16:39,000 ke mi heredi de, do mi volas certigi min pravalorizi 310 00:16:39,000 --> 00:16:43,000 ĉion mi depende antaŭ ol mi komencas provi uzi ĝin. 311 00:16:43,000 --> 00:16:46,000 Tiam se tiu inicializado ĝuste ĉi estas nur kiel diri se malloc 312 00:16:46,000 --> 00:16:50,000 ne revenis nula tiam mi povas komenci opcio iuj propraĵoj. 313 00:16:50,000 --> 00:16:54,000 >> En JavaScript kaj PHP ni ĉi ŝlosilvorto nomis tiun, 314 00:16:54,000 --> 00:16:58,000 kaj ĉi raportis al la nuna ekzemplo de klaso. 315 00:16:58,000 --> 00:17:00,000 En Objective-C Ni nomas tion mem. 316 00:17:00,000 --> 00:17:04,000 Kiam mi diras self.name, tio signifas ke la objekto 317 00:17:04,000 --> 00:17:07,000 Mi nur kreis kiam mi diris studento alloc init, 318 00:17:07,000 --> 00:17:09,000 ke tuj redonu al mi objekton. 319 00:17:09,000 --> 00:17:12,000 Tio signifas mi volas meti la nomon de tiu celo 320 00:17:12,000 --> 00:17:15,000 al kiom mi ĵus pasis in 321 00:17:15,000 --> 00:17:18,000 Ĝuste kiel en C, oni aliro membroj kun ĉi punkto, 322 00:17:18,000 --> 00:17:21,000 tiel self.name diras la nomo de la fakulo objekto 323 00:17:21,000 --> 00:17:24,000 nun tuj estos ajn vi ĵus pasis in 324 00:17:24,000 --> 00:17:28,000 Kaj tiel fine, mi povas redoni ĝin do mi reale preni ion. 325 00:17:28,000 --> 00:17:30,000 >> Demandoj? 326 00:17:30,000 --> 00:17:34,000 Okay, do ĉi mem = super init, 327 00:17:34,000 --> 00:17:37,000 se vi ne plene komprenas la heredaĵo stuff ne maltrankviliĝu. 328 00:17:37,000 --> 00:17:40,000 Nur scias ke se vi iam volas fari vian propran init metodo nur 329 00:17:40,000 --> 00:17:42,000 fari tion, kaj vi estos bona al iri. 330 00:17:42,000 --> 00:17:44,000 Yeah. >> [Studenta] Kion faras se mem meznombro? 331 00:17:44,000 --> 00:17:49,000 Tio signifas, kiam ni malloc ion ni ĉiam kontrolis se estis egala al nula, 332 00:17:49,000 --> 00:17:51,000 kaj se ĝi estis nula, tiam ni eliris. 333 00:17:51,000 --> 00:17:55,000 Ĉi tiu estas la sama afero, ĉar se tiu revenas nula, tiam ni probable tuj seg kulpo 334 00:17:55,000 --> 00:17:57,000 se ni komencos klopodi manipuli ĝin. 335 00:17:57,000 --> 00:18:01,000 Tio estas nia studenta klaso. 336 00:18:01,000 --> 00:18:03,000 Tio signifas ke ni povas pravalorizi niaj lernantoj en unu el du manieroj. 337 00:18:03,000 --> 00:18:08,000 Se mi diras studento alloc init Mi ne uzas tiu metodo, kiun mi ĵus skribis, 338 00:18:08,000 --> 00:18:11,000 kaj anstataŭ mi povas simple diri alice.name, 339 00:18:11,000 --> 00:18:14,000 kaj nun mi iros al starigis tiu bieno nomo. 340 00:18:14,000 --> 00:18:17,000 >> Simile, se mi volas uzi tiun initWithName metodo 341 00:18:17,000 --> 00:18:20,000 Mi povas diri simple alloc, kaj poste anstataŭ diri init 342 00:18:20,000 --> 00:18:24,000 Mi iros por voki tiu metodo, kiun mi ĵus kreis, kaj mi tuj pasos en Bob. 343 00:18:24,000 --> 00:18:30,000 Je ĉi tiu punkto, tiu objekto Bob havas nomon egala al Bob. 344 00:18:30,000 --> 00:18:35,000 Konsentite, cxi tie mi uzas tiun NSMutableArray ke ni rigardis antaŭe. 345 00:18:35,000 --> 00:18:38,000 Mi atribuo space.Then Mi inicializar nova tabelo. 346 00:18:38,000 --> 00:18:40,000 Mi tuj aldonos 2 aĵoj al ĝi. 347 00:18:40,000 --> 00:18:43,000 Tiu tabelo nun tenas studento celoj. 348 00:18:43,000 --> 00:18:46,000 Rimarku ke nenie mi ja devas diri ĉi tio estas tabelo de studentoj. 349 00:18:46,000 --> 00:18:48,000 Mi diris, ke ĝi estas tabelo, periodo. 350 00:18:48,000 --> 00:18:50,000 Tiam mi povas meti ajn ene de ĝi ke mi volas. 351 00:18:50,000 --> 00:18:52,000 Jen mi havas 2 celojn. 352 00:18:52,000 --> 00:18:56,000 >> Fine, mi havas alian celon tie, ĉi TF. 353 00:18:56,000 --> 00:18:59,000 Super tie en TF.h esence la sama aĵo. 354 00:18:59,000 --> 00:19:01,000 Mi heredi el NSObject, kaj por la vojo, 355 00:19:01,000 --> 00:19:03,000 kiam vi kreas klasoj ĉi estas ĉiuj faris al vi, 356 00:19:03,000 --> 00:19:06,000 tian interfaco Boilerplate. 357 00:19:06,000 --> 00:19:08,000 Ĝi havas proprieton de studentoj. 358 00:19:08,000 --> 00:19:15,000 Mi havas kelkajn metodojn tie kiuj ne vere tutan multe, 359 00:19:15,000 --> 00:19:18,000 kaj por ke signifas, post kiam mi kreis ĉi TF objekto 360 00:19:18,000 --> 00:19:23,000 Mi povas voki tiu metodo grado sur ĝi kiel ĉi tio. 361 00:19:23,000 --> 00:19:26,000 Demandojn sur Objective-C sintakso antaŭ ol ni komencos movi en iom pli 362 00:19:26,000 --> 00:19:30,000 interesa apps disvolviĝo stuff? 363 00:19:30,000 --> 00:19:34,000 >> Konsentite, do ni vere faras iPhone programon. 364 00:19:34,000 --> 00:19:39,000 La kerno klasoj kiuj vi estos uzanta ene de via iPhone programo nomiĝas vidpunkto controladores, 365 00:19:39,000 --> 00:19:42,000 kaj cele controlador esence reprezentas unuopa ekrano 366 00:19:42,000 --> 00:19:46,000 ene de via programo, do se mi sur la muziko programo, ekzemple, 367 00:19:46,000 --> 00:19:50,000 unu vido controlador povus reprezenti la vido, en kiu mi vidi ĉiujn kantojn de mia iPhone. 368 00:19:50,000 --> 00:19:53,000 Alia vido controlador povis esti kiam mi premas kanton kaj komenci ludi ĝin 369 00:19:53,000 --> 00:19:55,000 aŭ kiel mi taladrar malsupren en artistoj. 370 00:19:55,000 --> 00:19:59,000 Ĉiu el tiuj malsamaj ekranoj povus esti prezentita kiel malsama vidpunkto adaptilo, 371 00:19:59,000 --> 00:20:04,000 kaj cele controlador estas vere ĝuste klaso kiu diras ke tiu ekrano funkcias. 372 00:20:04,000 --> 00:20:07,000 Aĵoj ene de vido adaptilo, ni havos propraĵoj, 373 00:20:07,000 --> 00:20:10,000 tiel aĵoj kiel butono tuj estos propraĵo de nia vido adaptilo. 374 00:20:10,000 --> 00:20:13,000 >> Ni ankaŭ havos metodoj, kaj tiuj estas esence evento manipuladores. 375 00:20:13,000 --> 00:20:16,000 Ĉi tiu metodo diras kiam vi premas tiun butonon 376 00:20:16,000 --> 00:20:19,000 Mi volas fari ion, kaj fine, denove, 377 00:20:19,000 --> 00:20:24,000 nin tuj uzos ĉi mem ŝlosilvorto por aliri la nuna kazo. 378 00:20:24,000 --> 00:20:29,000 Konstrui interfacojn en iOS estas fakte vere, vere facila. 379 00:20:29,000 --> 00:20:32,000 Ili havas tiun belan treni kaj guto interfaco nomita Interfaco Builder, 380 00:20:32,000 --> 00:20:37,000 kaj la 2 ĉefaj konceptoj kiuj drato vian Objective-C al Interfaco Builder 381 00:20:37,000 --> 00:20:40,000 estas IBOutlet kaj IBAction. 382 00:20:40,000 --> 00:20:44,000 An IBOutlet simple diras ke se vi rakontos proprieto kiu estas butono, 383 00:20:44,000 --> 00:20:47,000 kaj vi volas enganchar ĝin al iu en via reala UI, 384 00:20:47,000 --> 00:20:49,000 vi tuj diras ke estas eliro. 385 00:20:49,000 --> 00:20:51,000 Simile, se vi volas reprezenti eventa traktilo 386 00:20:51,000 --> 00:20:54,000 tiam vi tuj diras ke estas ago. 387 00:20:54,000 --> 00:20:57,000 >> Por reale telegramon tiun grafikan reprezenton 388 00:20:57,000 --> 00:21:00,000 kaj via kodo estas vere, vere simpla. 389 00:21:00,000 --> 00:21:03,000 Se vi volas ligi al IBOutlet, ĉiuj vi devas fari estas kontrolas click, 390 00:21:03,000 --> 00:21:05,000 kaj ni vidos ekzemplon de tiu vere rapida. 391 00:21:05,000 --> 00:21:07,000 Vi kontroli klaku kie diras Montri Controller. 392 00:21:07,000 --> 00:21:09,000 Vi tuj treni en la interfaco, aŭ inverse, 393 00:21:09,000 --> 00:21:13,000 se vi volas conectarse okazaĵo traktilo vi tuj treni de la interfaco 394 00:21:13,000 --> 00:21:15,000 en la alia direkto. 395 00:21:15,000 --> 00:21:20,000 Ni rigardu vere simpla iOS ekzemplo. 396 00:21:20,000 --> 00:21:23,000 >> Ni kreu novan projekton. 397 00:21:23,000 --> 00:21:25,000 Mi tuj venos ĉi tien por Apliko, 398 00:21:25,000 --> 00:21:28,000 kaj mi tuj klaku Single Montri Apliko. 399 00:21:28,000 --> 00:21:31,000 Mi tuj klaku proksima. Mi donos mian projekton nomon. 400 00:21:31,000 --> 00:21:33,000 Mi nomas ĝin Saluton. 401 00:21:33,000 --> 00:21:36,000 Interese, Apple supozas ke vi kreis produkto 402 00:21:36,000 --> 00:21:38,000 por ke vi povas vendi ĝin kaj ili povas gajni monon. 403 00:21:38,000 --> 00:21:41,000 Cxi tie mi intencas diri ke ĉi tio estas iPhone programon. 404 00:21:41,000 --> 00:21:44,000 Vi povas krei iPad app, aŭ se vi volas krei unu el tiuj apps 405 00:21:44,000 --> 00:21:47,000 kiu apogas ambaŭ aparatoj povas fari tion ankaŭ. 406 00:21:47,000 --> 00:21:49,000 Tio estas kion vi volas, ke via checkmarks por simili. 407 00:21:49,000 --> 00:21:51,000 >> Vi volas uzi storyboards, kiujn ni vidos poste, 408 00:21:51,000 --> 00:21:54,000 kaj vi certe volas uzi aŭtomatan referenco kalkula, 409 00:21:54,000 --> 00:21:58,000 kiu estas bela trajto kiu malhelpas vin de devi diri malloc kaj libera. 410 00:21:58,000 --> 00:22:03,000 Krom se vi volas nomi malloc kaj libera, mi lasus ĉi antaŭŝirmtukon. 411 00:22:03,000 --> 00:22:07,000 Mi klaku sekva, kaj fine, ĉi tiu tuj demandas min, kie mi volas savi ĝin. 412 00:22:07,000 --> 00:22:14,000 Mi batis krei, kaj tie ni iru. 413 00:22:14,000 --> 00:22:16,000 Mi kreis novan projekton. 414 00:22:16,000 --> 00:22:19,000 Super tie maldekstre estas ĉiuj dosieroj, kiuj estas ene de mia projekto, 415 00:22:19,000 --> 00:22:22,000 kaj rimarki ke mi havas tutan faskon, kaj mi eĉ ne fari ion. 416 00:22:22,000 --> 00:22:24,000 IOS estas granda. 417 00:22:24,000 --> 00:22:27,000 >> Ekzemple, tie ĉi ViewController.h, 418 00:22:27,000 --> 00:22:30,000 ĉi tiu tuj reprezenti mia unua vido adaptilo, 419 00:22:30,000 --> 00:22:32,000 do la unua ekrano interne de mia programo. 420 00:22:32,000 --> 00:22:34,000 Nun ni scias kio estas tiu diras. 421 00:22:34,000 --> 00:22:36,000 Ni diris mi nomante tiun klason ViewController, 422 00:22:36,000 --> 00:22:40,000 kaj ViewController faras ĉion, kion oni UIViewController faras, 423 00:22:40,000 --> 00:22:43,000 kaj ĉi, denove, estas iu klaso kiuj Apple skribis kiu faras multan oportuna ajxojn ni 424 00:22:43,000 --> 00:22:46,000 kiel montras la ekranon. 425 00:22:46,000 --> 00:22:50,000 Jen kie mi povas vere komenci difini kio miaopinie controlador faras, 426 00:22:50,000 --> 00:22:52,000 kaj tio rezultas, ke mi vere ne bezonas iu ajn el ĉi tio. 427 00:22:52,000 --> 00:22:55,000 Ĉi tiu estas Boilerplate kodo ke Apple donas min senpage. 428 00:22:55,000 --> 00:22:59,000 Mi faris bezonas tiu unua linio, alie mi ne havas klason, 429 00:22:59,000 --> 00:23:02,000 do ni povas liveri de tiu kaj forigi ĉi. 430 00:23:02,000 --> 00:23:05,000 Okay, do ĉi tiu estas mia malplena ekrano. 431 00:23:05,000 --> 00:23:08,000 >> Nun ni alklaku ĉi MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 kaj ĉi tiu estas kie komencas akiri interesa. 433 00:23:11,000 --> 00:23:14,000 Ĉi tio reprezentas la unuan ekranon de mia programo. 434 00:23:14,000 --> 00:23:17,000 Se mi volas aldoni butonon, en HTML Mi devis krei butonon etikedo. 435 00:23:17,000 --> 00:23:20,000 En Android vi devas krei butonon etikedo, 436 00:23:20,000 --> 00:23:23,000 sed en iOS se Mi nur malsupreniris tien al la fundo dekstre 437 00:23:23,000 --> 00:23:27,000 kaj se mi alklaku ĉi 3rd ĉi tie kie diras Celoj, 438 00:23:27,000 --> 00:23:31,000 kaj mi povas rulumi malsupren, alie mi povas ekserĉi por butonon. 439 00:23:31,000 --> 00:23:35,000 Kaj vidu, butono, do se mi vere treni kaj faligi tiun rajton tie, 440 00:23:35,000 --> 00:23:38,000 Mi ĵus aldonis butonon al ĉi tiu ekrano de mia programo. 441 00:23:38,000 --> 00:23:41,000 Se mi volas ŝanĝi la tekston, mi povas duobla klaku ĝin, 442 00:23:41,000 --> 00:23:47,000 diri ion forlogante kiel "Premu Min." 443 00:23:47,000 --> 00:23:51,000 Okay, nun se mi kuros ĉi tiun programon, do ni kompili ĝin, 444 00:23:51,000 --> 00:23:54,000 tiel por ruligi ĝin mi premas la verko butonon en la supre maldekstre, kaj ne estas mia programo. 445 00:23:54,000 --> 00:23:58,000 Mi faris nenion, kaj mi ricevis agrablan rigardante iPhone programon. 446 00:23:58,000 --> 00:24:01,000 Se mi volas halti ĝin, vi povas alklaki la halto butono 447 00:24:01,000 --> 00:24:03,000 ĉar ĝi estas pli amuza. 448 00:24:03,000 --> 00:24:07,000 >> Diru, ke mi vere volas ion okazi kiam mi premas tiun butonon. 449 00:24:07,000 --> 00:24:09,000 Fari tion kion mi devas fari estas mi bezonas krei 450 00:24:09,000 --> 00:24:13,000 nova eventa traktilo aŭ ago. 451 00:24:13,000 --> 00:24:16,000 Tio signifas, ke mi devas krei iun metodon, ke mi volas esti nomata 452 00:24:16,000 --> 00:24:18,000 kiam mi premas la butonon, do ni kreos novan metodon. 453 00:24:18,000 --> 00:24:20,000 Mi estas ene de ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Mi bezonas diri ke metodo ekzistas. 455 00:24:22,000 --> 00:24:26,000 Mi bezonas streketo unue ĉar mi tuj iros nomante tion en la vido adaptilo. 456 00:24:26,000 --> 00:24:28,000 Mi bezonas doni tiun tipo. 457 00:24:28,000 --> 00:24:31,000 La tipo de ĉi tio estos tiom IBAction afero, kiun ni vidis antaŭe. 458 00:24:31,000 --> 00:24:35,000 Ĉi tiu estas eventa traktilo, do tuj reveni al IBAction, 459 00:24:35,000 --> 00:24:38,000 kaj ĉi tiu estas aludo al Xcode diri ke 460 00:24:38,000 --> 00:24:40,000 ĉi tio estas iu volas telegramon ion. 461 00:24:40,000 --> 00:24:45,000 Mi povas doni al ĝi nomon, kiel buttonPressed, punktokomo. 462 00:24:45,000 --> 00:24:48,000 >> Nun mi deklaras novan metodon interne de mia klaso. 463 00:24:48,000 --> 00:24:50,000 Mi diris tiun metodon devas ekzisti. 464 00:24:50,000 --> 00:24:53,000 Nun ni venos en ViewController.m, 465 00:24:53,000 --> 00:24:56,000 kaj diru kion tiu metodo povas fari. 466 00:24:56,000 --> 00:25:03,000 Se mi ektajpu, ekzemple, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 avizo Xcode estas vere belaj kaj autocompletes por mi. 468 00:25:06,000 --> 00:25:09,000 Tio estas vere mirinda. 469 00:25:09,000 --> 00:25:12,000 Rimarku tie ene de la. M dosiero mi povas ankaŭ diri malplena, 470 00:25:12,000 --> 00:25:15,000 kaj ĉi tio estas ĉar tiu IBAction ne reale tipo. 471 00:25:15,000 --> 00:25:19,000 Ĝi estas fakte hashtag difinita ie esti malplena, 472 00:25:19,000 --> 00:25:22,000 kaj denove, ĉi tiu estas nur aludo al Xcode kiu diras 473 00:25:22,000 --> 00:25:25,000 Mi volas ĉi esti eventa traktilo, kaj ni vidos kial en nur dua. 474 00:25:25,000 --> 00:25:28,000 Kiam tiun butonon estas premita Mi faros ion ĝena 475 00:25:28,000 --> 00:25:30,000 kiel montras ŝprucfenestron. 476 00:25:30,000 --> 00:25:35,000 >> Por fari tion mi povas krei novan petskribon de ĉi tiu klaso nomis UIAlertView, 477 00:25:35,000 --> 00:25:39,000 kaj ĉi tiu estas klaso ke Apple skribis ke tuj montri tedas popups. 478 00:25:39,000 --> 00:25:43,000 Ni nomas tion ŝprucfenestron garde, kaj mi havas 2 paŝoj, memoru, por krei ĉi tiun celon. 479 00:25:43,000 --> 00:25:46,000 La unua afero Mi bezonas fari estas atribui spaco. 480 00:25:46,000 --> 00:25:48,000 Mi volas UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Mi volas destini spaco. Tiu estas mia unua metodo. 482 00:25:51,000 --> 00:25:53,000 Mia sekva maniero estas mi volas pravalorizi ĝin, 483 00:25:53,000 --> 00:25:58,000 kaj tial mi havas ĉi granda, longa metodo nomata initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Tio esence tuj kontroli kion ĉi ŝprucfenestron diras. 485 00:26:01,000 --> 00:26:04,000 La titolo de mia ŝprucfenestron povas esti saluton. 486 00:26:04,000 --> 00:26:08,000 La mesaĝo de tiu ŝprucfenestron povas esti "Tio estas iOS." 487 00:26:08,000 --> 00:26:10,000 Delegita afero, mi ne scias kion tio estas. 488 00:26:10,000 --> 00:26:13,000 Diru ĝi estas nenio. 489 00:26:13,000 --> 00:26:18,000 Nun la butono kiu tuj aperos povas diri ion kiel "certa estas," 490 00:26:18,000 --> 00:26:24,000 kaj mi ne vere volas ajna alia butonoj, do ni forviŝi tion kaj fermi la krampo. 491 00:26:24,000 --> 00:26:27,000 >> Konsentite, mi kreis ekstran unu. Tie ni iru. 492 00:26:27,000 --> 00:26:30,000 Jen kiel mi povas krei novan fenestron. 493 00:26:30,000 --> 00:26:35,000 Se mi volas reale montras la ŝprucfenestron mi volas alvoki show metodo. 494 00:26:35,000 --> 00:26:38,000 Por fari tion mi povas diri garde kaj programo, 495 00:26:38,000 --> 00:26:40,000 kaj denove, autocomplete estis super agrabla. 496 00:26:40,000 --> 00:26:42,000 Se mi forgesis kion tio estis, se mi nur tajpis en s, 497 00:26:42,000 --> 00:26:45,000 Mi povas rulumi tra ĉi tie por malkovri kio estis, 498 00:26:45,000 --> 00:26:48,000 kaj ĝi filtras bele. 499 00:26:48,000 --> 00:26:52,000 Nun mi kreis tiun novan fenestron. 500 00:26:52,000 --> 00:26:55,000 Ni revenos al kio delegito signifas poste, 501 00:26:55,000 --> 00:26:58,000 kaj nun mi volas diri ke mi volas ke tiu metodo esti pafitaj 502 00:26:58,000 --> 00:27:01,000 kiam mi premas la butonon, do mi tuj revenos al mia storyboard, 503 00:27:01,000 --> 00:27:04,000 kaj mi volas nun kunigi ĉi IBAction. 504 00:27:04,000 --> 00:27:06,000 La unua kiu volas fari estas klaki la butonon. 505 00:27:06,000 --> 00:27:08,000 Kiam mi premas tiun butonon Mi volas ion okazos. 506 00:27:08,000 --> 00:27:10,000 Mi ne tuj premadu kontrolo. 507 00:27:10,000 --> 00:27:13,000 Mi tuj alklaki kaj treni de la butonon 508 00:27:13,000 --> 00:27:15,000 al pli tie kie diras Montri Controller. 509 00:27:15,000 --> 00:27:17,000 Ni povas vidi ke ĝi bele lumigas supren. 510 00:27:17,000 --> 00:27:22,000 >> Se mi lasis iri kun mia muso Mi nun havas tiun fenestron super tie kie mi havas iujn eblojn. 511 00:27:22,000 --> 00:27:24,000 Unu el tiuj estas la eventoj, ke mi povas registriĝi. 512 00:27:24,000 --> 00:27:28,000 Ĉi tiuj estas ĉiuj el tiuj metodoj mi deklaris en mia h dosiero IBActions. 513 00:27:28,000 --> 00:27:31,000 Tiel estas kiel Xcode scias kion devus aperi en tiu malgranda listo, 514 00:27:31,000 --> 00:27:33,000 por ke estas nur aludo. 515 00:27:33,000 --> 00:27:37,000 Se mi alklaku butonon premita, mi nun registris la eventa traktilo. 516 00:27:37,000 --> 00:27:41,000 En JavaScript ni devis diri ke mi havas iom da kodo kiu registris la eventa traktilo. 517 00:27:41,000 --> 00:27:43,000 En Objective-C estis vere tiel facila. 518 00:27:43,000 --> 00:27:46,000 Se mi kuras ĉi denove 519 00:27:46,000 --> 00:27:49,000 nun kiam mi premas la butonon mia eventa traktilo tuj pafi, 520 00:27:49,000 --> 00:27:51,000 kaj mi tuj get this ŝprucfenestron. 521 00:27:51,000 --> 00:27:54,000 Super, super simplan tie. 522 00:27:54,000 --> 00:27:57,000 >> Se vi iam volis vidi ĉiujn eventojn kiuj okazas esti registrita 523 00:27:57,000 --> 00:28:00,000 sur komponanto se mi alklaku tiun butonon 524 00:28:00,000 --> 00:28:02,000 kaj mi venis ĉi tien al la dekstra flanko 525 00:28:02,000 --> 00:28:05,000 unue vi povas vidi ĉi tie mi povas fari aferojn kiel la tipo de la butono, 526 00:28:05,000 --> 00:28:08,000 do se vi volas unu el tiuj mi aŭ de la add kontakto butono 527 00:28:08,000 --> 00:28:10,000 aŭ kion ajn. 528 00:28:10,000 --> 00:28:13,000 Se mi volas vidi ĉiujn eventojn, kiuj estas sur tiun butonon 529 00:28:13,000 --> 00:28:16,000 se mi venos tuta vojo ĉi tien al la dekstra flanko 530 00:28:16,000 --> 00:28:19,000 ni povas vidi tie en la okazaĵoj Mi havas ĉiujn tiujn malsamaj okazaĵoj. 531 00:28:19,000 --> 00:28:23,000 Mi povas premi la butonon, kiam mi lasis iri de la butono, kiam mi duobligi krano aŭ kion ajn, 532 00:28:23,000 --> 00:28:26,000 kaj la unu mi nur registris estas ĉi evento nomita Touch Supren Ene, 533 00:28:26,000 --> 00:28:29,000 kaj ĉi diras ke tuj kiam mia fingro elspezas la butono 534 00:28:29,000 --> 00:28:32,000 tiu evento tuj fajro, kaj tio estas ĝuste kion ĵus okazis. 535 00:28:32,000 --> 00:28:36,000 Tio estas speco de la defaŭlta butono premita evento. 536 00:28:36,000 --> 00:28:39,000 >> Demandojn ĝis nun? 537 00:28:39,000 --> 00:28:43,000 Okay, jen kiel ni povas starti al telegramon aferojn en nia kodo 538 00:28:43,000 --> 00:28:46,000 en aferoj ene de nia interfaco. 539 00:28:46,000 --> 00:28:49,000 Memoru ni unue devis fari estis trovi la kodon, 540 00:28:49,000 --> 00:28:54,000 kaj poste ni telegramis ĝis la interfaco por la kodo, 541 00:28:54,000 --> 00:28:57,000 kaj tie estas nia unua programon. 542 00:28:57,000 --> 00:29:00,000 Konsentite, kiu estis vere malvarmeta, kaj ni kreis tiun ĉi butonon. 543 00:29:00,000 --> 00:29:03,000 Kio se ni ne volas havi por krei aron da propraĵoj 544 00:29:03,000 --> 00:29:05,000 reprezenti tiuj butonoj? 545 00:29:05,000 --> 00:29:08,000 Ekzemple, en Tic Tac Toe mi havas 9 butonoj, 546 00:29:08,000 --> 00:29:11,000 kaj tio estus super, super tedas devos treni kaj faligi 9 fojoj 547 00:29:11,000 --> 00:29:14,000 aŭ ĉu mi devis fari Tic Tac Toe kun 81 anstataŭ 9 548 00:29:14,000 --> 00:29:17,000 kaj mi devis treni kaj faligi 81 fojojn, kaj tio estas lama. 549 00:29:17,000 --> 00:29:20,000 Kion ni povas fari anstataŭ estas multe kiel HTML 550 00:29:20,000 --> 00:29:23,000 kiam ni havis aĵojn kiel IDs kaj nomoj kaj ni povas serĉi aĵoj 551 00:29:23,000 --> 00:29:27,000 per sia ID, ekzistas simila nocio en iOS nomata etikedoj. 552 00:29:27,000 --> 00:29:31,000 >> Al etikedo estas simple solaj nombraj ensalutilo por komponanto. 553 00:29:31,000 --> 00:29:34,000 Se mi diras ĉi havas etikedo de 0, ekzemple, 554 00:29:34,000 --> 00:29:38,000 se mi krei butonon kaj doni etikedo de 0, kaj ni vidos kiel fari tion en nur dua, 555 00:29:38,000 --> 00:29:41,000 se mi volas ke butono mi povas simple diri ke mi volas nomi 556 00:29:41,000 --> 00:29:45,000 la viewWithTag metodo en la objekto tien, 557 00:29:45,000 --> 00:29:48,000 la self.view, kiu reprezentas la aktualan ekranon, ekzemple. 558 00:29:48,000 --> 00:29:53,000 Se mi nomas tion viewWithTag metodo, mi iros tiri reen al la butono kun etikedo 0. 559 00:29:53,000 --> 00:29:58,000 Ni rigardu tion per konstruaĵo Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Unue, ĉi tiu estas mia storyboard. 561 00:30:01,000 --> 00:30:05,000 Mi kreis ĉi tiujn 10 UI butonoj. 562 00:30:05,000 --> 00:30:07,000 Rimarku ili ĉiuj havas la saman grandecon. 563 00:30:07,000 --> 00:30:11,000 Se mi premas unu el tiuj kaj mi revenos tien sur ĉi dekstra flanko 564 00:30:11,000 --> 00:30:15,000 vi vidos mi ĝustigis la tiparon ĉi tie, do mi faris la tiparo iomete pli granda, 565 00:30:15,000 --> 00:30:19,000 sed kion mi ankaux faris estis mi starigis ĉi etikedo. 566 00:30:19,000 --> 00:30:23,000 Mi diris ke ĉi tiu havas etikedo de 1, kaj tio estas la supro maldekstro. 567 00:30:23,000 --> 00:30:26,000 >> Nun, se mi klaku alia butono, kiel ĉi tiu dua ĉi tie, 568 00:30:26,000 --> 00:30:29,000 nun vi vidos, ke mia etikedo estas 2. 569 00:30:29,000 --> 00:30:32,000 Ĉiu el tiuj butonoj nur havas unika etikedo, 570 00:30:32,000 --> 00:30:35,000 kaj tiel ĉi tio poste kiom mi iros por komenci interagante 571 00:30:35,000 --> 00:30:38,000 kun mia programo. 572 00:30:38,000 --> 00:30:40,000 Tio estas ĉio ene de unu vido adaptilo, 573 00:30:40,000 --> 00:30:42,000 sed jen estas, kion ni havas. 574 00:30:42,000 --> 00:30:44,000 Ni havas 3 propraĵoj tie. 575 00:30:44,000 --> 00:30:49,000 La unua kaj lasta tuj reprezentas la staton de mia estraro. 576 00:30:49,000 --> 00:30:53,000 Esence tiu unua estas tabelo reprezenti kie la x kaj Os estas. 577 00:30:53,000 --> 00:30:57,000 Ĉi tiu alia ĉi tie diras al ni, kies vico estas. 578 00:30:57,000 --> 00:31:01,000 Vi rimarkos, ke mi ankaŭ havas ĉi tiujn aĵojn tie. 579 00:31:01,000 --> 00:31:05,000 Antaŭ kiam ni deklaris propraĵoj ni donis ilin gloraj kaj tipon. 580 00:31:05,000 --> 00:31:08,000 Ni povas ankaŭ doni al ili kelkajn pliajn informojn ĉi tie. 581 00:31:08,000 --> 00:31:11,000 Ĉi tiu unua diras nonatomic, kaj kion tiu diras 582 00:31:11,000 --> 00:31:16,000 estas esence nur unu afero iam esti provante atingi tiun variablon samtempe. 583 00:31:16,000 --> 00:31:19,000 Vi povus fari pli kompleksaj aplikaĵoj kiuj estas mult-threaded, 584 00:31:19,000 --> 00:31:22,000 kaj tiel denove en Scratch ni havis malsamajn fadenoj, 585 00:31:22,000 --> 00:31:25,000 kaj malsamaj sprites povus fari malsamajn aferojn samtempe. 586 00:31:25,000 --> 00:31:29,000 >> Se tio ne estas la kazo, kiu estas ne en tio kion ni estos rigardante, 587 00:31:29,000 --> 00:31:33,000 se ni dirus nonatomic ĝi estas vere tuj faros tion iomete pli rapida. 588 00:31:33,000 --> 00:31:37,000 Ni havas ankaŭ tion nomis atribuas, fortaj, aŭ malforta. 589 00:31:37,000 --> 00:31:40,000 Ĉi atribui nur diras ke tiu estas normo tipo. 590 00:31:40,000 --> 00:31:43,000 Tio ne estas objekto aŭ puntero ĉar ĉi estas nur bool, 591 00:31:43,000 --> 00:31:46,000 tiel bool estas konstruita en Objective-C. 592 00:31:46,000 --> 00:31:49,000 Ĉi tio diras ne provas fari ion fantazio kun indikoj tie. 593 00:31:49,000 --> 00:31:51,000 Ĝi estas regula malnova scaler. 594 00:31:51,000 --> 00:31:54,000 Fortaj kaj malfortaj, ĉi malforta diras ke efektive 595 00:31:54,000 --> 00:31:57,000 Mi volas ke ĉi tio montras ion en la vido adaptilo. 596 00:31:57,000 --> 00:32:00,000 Mi ne tuj reale atribui aŭ init ĉi mi mem. 597 00:32:00,000 --> 00:32:04,000 La interfaco konstruanto, kiam mi kuras la app, tuj manipuli cxiuj inicialización. 598 00:32:04,000 --> 00:32:07,000 Se mi diras malforta, kiu diras iun alian tuj estos krei ĉi. 599 00:32:07,000 --> 00:32:09,000 Se mi diras forta, ĉi tiu diras, ke mi tuj estos la unu 600 00:32:09,000 --> 00:32:12,000 ke tio kreas tiun tabulon objekto, 601 00:32:12,000 --> 00:32:14,000 kaj tiel tie mi havas iom pli metodoj tie, 602 00:32:14,000 --> 00:32:18,000 ekzemple, ago por kiam la nova ludo butono estas premita, 603 00:32:18,000 --> 00:32:20,000 ago cxar kiam iu el la aliaj butonoj premitaj, 604 00:32:20,000 --> 00:32:23,000 kaj tiel plu. 605 00:32:23,000 --> 00:32:26,000 >> Ni ne eniri tro multa de la logiko de Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 kvankam estas tre ekscita, sed ni rigardu 607 00:32:30,000 --> 00:32:33,000 iuj el la aĵoj kiujn ni povas fari ene de iOS. 608 00:32:33,000 --> 00:32:35,000 Ĉi nova ludo metodo tuj estos pafis 609 00:32:35,000 --> 00:32:37,000 kiam mi premas la nova ludo butonon. 610 00:32:37,000 --> 00:32:41,000 Por enganchar ke ĝis mi simple venu al mia storyboard. 611 00:32:41,000 --> 00:32:43,000 Mi alklakis nova ludo. 612 00:32:43,000 --> 00:32:47,000 Se mi revenos tien dekstre mi vidas ke 613 00:32:47,000 --> 00:32:50,000 Tuŝu Supren Ene estas telegramis al la newGame metodo. 614 00:32:50,000 --> 00:32:53,000 Tial ĉi tiu tuj get pafis. 615 00:32:53,000 --> 00:32:56,000 La newGame metodo tuj faros iu aro supren. 616 00:32:56,000 --> 00:32:59,000 Oni intencas diri mi volas ke vi certe la stato de la tabulo. 617 00:32:59,000 --> 00:33:01,000 Tiu estas bela maniero de mutable tabeloj. 618 00:33:01,000 --> 00:33:03,000 Tiu tuj diri ke estas nun X la vico, 619 00:33:03,000 --> 00:33:07,000 kaj nun mi iros por utiligi ĉi viewWithTag afero. 620 00:33:07,000 --> 00:33:11,000 >> Mi scias ke mia butonoj havas la etikedoj 1-9, 621 00:33:11,000 --> 00:33:13,000 kaj tio estas io, kion mi arbitre plukis. 622 00:33:13,000 --> 00:33:15,000 Se mi volas agordi la teksto de ĉiu butonon por esti malplena 623 00:33:15,000 --> 00:33:17,000 ĉar mi ĵus komencis novan ludon kaj mi ne volas 624 00:33:17,000 --> 00:33:20,000 X aŭ Os resti super mi povas fari ĉi tion. 625 00:33:20,000 --> 00:33:24,000 Mi povas diri ke mi volas la vido kun la etikedo, 1, 2, 3, 4 kaj tiel plu. 626 00:33:24,000 --> 00:33:27,000 Tio tiri malsama butonon ĉiufoje. 627 00:33:27,000 --> 00:33:30,000 Jen mi tuj ĵetis ĝin al UIButton. 628 00:33:30,000 --> 00:33:33,000 Samkiel ni povus jxetu ints al flosas kaj inverse 629 00:33:33,000 --> 00:33:37,000 ĉi diras, ke mi volas jxetu ĉi al UIButton. 630 00:33:37,000 --> 00:33:40,000 Tio signifas la tipo de ĉi estos UIButton * 631 00:33:40,000 --> 00:33:43,000 pro punteros, sed ne zorgu, ili estas ne timigas plu. 632 00:33:43,000 --> 00:33:47,000 >> Iam mi havas tiun butonon mi iros por voki metodon sur ĝi. 633 00:33:47,000 --> 00:33:50,000 Tiu metodo nomiĝas setTitle forState, kaj tiel ĉi diras 634 00:33:50,000 --> 00:33:53,000 Mi volas meti la tekston de la butono al esti la malplena linio, 635 00:33:53,000 --> 00:33:57,000 kaj mi volas ke ĝi estu la malplena linio, kiam ĝi ne premis. 636 00:33:57,000 --> 00:34:01,000 Se Mi uzas tiun metodon, mi povas ŝanĝi la tekston de la butonon 637 00:34:01,000 --> 00:34:04,000 tuj kiam iu batas ĝi, sed ni volas diri kiam la butono estas nur sidas tie 638 00:34:04,000 --> 00:34:07,000 Mi volas la teksto esti malplena. 639 00:34:07,000 --> 00:34:10,000 Fine, ni iras al pravalorizi miaj tabulo, 640 00:34:10,000 --> 00:34:12,000 kaj mi tuj diros ke ĉiu estas aktuale je 0, 641 00:34:12,000 --> 00:34:15,000 tial ĉi tiu forumaro membroj neŝanĝeblaj estas ŝanĝebla tabelo, 642 00:34:15,000 --> 00:34:21,000 kio signifas mi povas alvoki addObject metodo kaj nur 0 ene de ĝi. 643 00:34:21,000 --> 00:34:23,000 Tio estas kio okazas kiam mi krei novan ludon. 644 00:34:23,000 --> 00:34:25,000 >> Ni rigardu alian. 645 00:34:25,000 --> 00:34:28,000 Ĉi tiu metodo tie estas la IBAction ke tuj estos premata 646 00:34:28,000 --> 00:34:31,000 ĉiufoje unu el tiuj kvadratoj estas premita. 647 00:34:31,000 --> 00:34:33,000 Nun ni havas iujn Tic Tac Toe logiko tie. 648 00:34:33,000 --> 00:34:36,000 Ni elŝeligi kies vico estas, 649 00:34:36,000 --> 00:34:39,000 kaj surbaze de tiu ni ĉu agordi X aŭ O, 650 00:34:39,000 --> 00:34:43,000 sed ni rimarkas ke ni reutilizando ĉi sama eventa traktilo 651 00:34:43,000 --> 00:34:45,000 por ĉiu sola unu el tiuj butonoj. 652 00:34:45,000 --> 00:34:49,000 Tio signifas ke mi ne havas metodon por la supre maldekstre butonon, 653 00:34:49,000 --> 00:34:52,000 malsama maniero por la fundo dekstra butono, kvankam mi povus havi faris tion. 654 00:34:52,000 --> 00:34:54,000 Tio ne vere estas bona dezajno. 655 00:34:54,000 --> 00:34:57,000 Kion mi faras tie ĉi estas mi fakte tuj determini 656 00:34:57,000 --> 00:35:00,000 kion la etikedo de la butono kiu premis estas. 657 00:35:00,000 --> 00:35:04,000 Vi rimarkos ke ĉi verko metodo prenas unu argumento. 658 00:35:04,000 --> 00:35:07,000 Ĝi estas nomita sendinto, kaj kio sendinto estas estas sendinto tuj 659 00:35:07,000 --> 00:35:10,000 reprezenti ĝuste kio estis farita agado sur. 660 00:35:10,000 --> 00:35:15,000 Se mi premi butonon, ĉi sendinto tuj estos ke UIButton 661 00:35:15,000 --> 00:35:18,000 ke mi enŝovis, do tio signifas ke tiu UIButton 662 00:35:18,000 --> 00:35:20,000 havas etikedo ĉar mi kreis etikedon. 663 00:35:20,000 --> 00:35:23,000 >> Se mi volas atingi la etikedo mi povas simple diri 664 00:35:23,000 --> 00:35:26,000 Mi volas la etikedo de la sendinto, 665 00:35:26,000 --> 00:35:28,000 kaj denove, mi ĵus distribuita la rolo ĝin al UIButton. 666 00:35:28,000 --> 00:35:32,000 Mi hazarde scias ke la sendinto estos UIButton. 667 00:35:32,000 --> 00:35:34,000 Ĝi ne ĉiam devas esti UIButton. 668 00:35:34,000 --> 00:35:36,000 Mi povus, ekzemple, registri la sama okazaĵo traktilo 669 00:35:36,000 --> 00:35:38,000  dum unu por butonon, unu kiel slider. 670 00:35:38,000 --> 00:35:40,000 En ĉi tiu kazo, mi scias ke ili estas ĉiuj butonoj, do mi tuj diros 671 00:35:40,000 --> 00:35:43,000 Mi volas ĉi esti butonon, kaj tiam mi povos atingi la etikedo, 672 00:35:43,000 --> 00:35:48,000 kaj el la etikedo mi nun scias, kie mi estas ene de la tabulo. 673 00:35:48,000 --> 00:35:51,000 Tiam mi povas simple starigis ĉu la X aŭ la O, povas klaki la turno, 674 00:35:51,000 --> 00:35:54,000 kontroli kiu gajnis, kaj tiel plu. 675 00:35:54,000 --> 00:35:59,000 >> Demandojn en ĉi ĝis nun? 676 00:35:59,000 --> 00:36:02,000 Konsentite, la tuta kodo ni afiŝis online-ni ne volas eniri tro multe 677 00:36:02,000 --> 00:36:06,000 de la Tic Tac Toe logiko, sed nun vi povas vidi, ke vere 678 00:36:06,000 --> 00:36:09,000 ĉiuj ni faras estas ni looping super ĉi tabelo, 679 00:36:09,000 --> 00:36:13,000 do ni havos kelkajn por maŝojn tie, kaj ni simple kompari vidi 680 00:36:13,000 --> 00:36:18,000 do ni havas partion en ĉiuj vicoj, turniro en kolumno aŭ io kiel tio. 681 00:36:18,000 --> 00:36:21,000 Por reale kuri ĉi tiun programon, se mi tap sur unu el tiuj butonoj 682 00:36:21,000 --> 00:36:24,000 kiun ili ludas metodo estis pafita, do tio signifas Mi nur metis 683 00:36:24,000 --> 00:36:31,000 la butonon esti X, do nun tiun butonon estos ho, kaj tiel plu, 684 00:36:31,000 --> 00:36:35,000 kaj por ke estas kiel ni komencas interagi kun ĉi sola paĝo programon. 685 00:36:35,000 --> 00:36:38,000 >> Ni afiŝi la kodon, do bonvolu peruse ke, 686 00:36:38,000 --> 00:36:43,000 sed ni nun parolas pri iu apps kiuj estas pli ol nur unu paĝo. 687 00:36:43,000 --> 00:36:47,000 Kiel ekscita kiel Tic Tac Toe estis, multe da apps ene de iOS 688 00:36:47,000 --> 00:36:50,000 estas speco de tiuj borilo malsupren aĵojn kun multnombraj ekranoj. 689 00:36:50,000 --> 00:36:54,000 La unua koncepto ke estas bezono paroli estas protokoloj, 690 00:36:54,000 --> 00:36:57,000 kaj protokolo estas simple aro de metodoj 691 00:36:57,000 --> 00:36:59,000 ke vi povas promesi al difini. 692 00:36:59,000 --> 00:37:02,000 Se mi kreos tiu nova protokolo kun 2 metodoj, tiu unua, 693 00:37:02,000 --> 00:37:05,000 se la reveno tipo estas malplena, mi nomis ĝin foo. 694 00:37:05,000 --> 00:37:07,000 Ĝi prenas neniun argumenton. Mi havas alian metodon. 695 00:37:07,000 --> 00:37:11,000 Ĝi redonas int. Mi vokis ĝin bari, kaj ĝi prenas unu argumento. 696 00:37:11,000 --> 00:37:14,000 Ĉiuj ĉi protokolo estas kiu nomas SomeProtocol tien, 697 00:37:14,000 --> 00:37:19,000 ĉi estas aro de aĵoj ke iu povas apliki. 698 00:37:19,000 --> 00:37:22,000 Mi ne ene de ĉi protokolo diris kion foo faras. 699 00:37:22,000 --> 00:37:26,000 Anstataŭe, mi nur diras al vi povus difini foo se vi volas. 700 00:37:26,000 --> 00:37:30,000 Se mi kreas view controlador aŭ kreante klason 701 00:37:30,000 --> 00:37:33,000 Mi povas ene de tiu klaso promeso apliki 702 00:37:33,000 --> 00:37:40,000 kelkaj el tiuj manieroj, tiel ekzemple, se diri 703 00:37:40,000 --> 00:37:43,000 ĉi nun diras mi faras promeson al vi, ke interne 704 00:37:43,000 --> 00:37:50,000 de tiu vidpunkto controlador klaso mi havos difinojn por ambaŭ foo kaj trinkejo. 705 00:37:50,000 --> 00:37:52,000 >> Kial tiom utila? 706 00:37:52,000 --> 00:37:55,000 Multaj de komponantoj ene de iOS utiligi tiun 707 00:37:55,000 --> 00:37:58,000 dezajno mastro vokis delegacio, kaj kion delegacio diras 708 00:37:58,000 --> 00:38:01,000 estas ke, ekzemple, se mi havas teksta kadro 709 00:38:01,000 --> 00:38:04,000 kaj tie estas kelkaj okazaĵoj kiuj povus esti registrita interne de mia teksto skatolo, 710 00:38:04,000 --> 00:38:07,000 anstataŭ krei apartajn eventojn kion mi povas fari estas mi povas diri 711 00:38:07,000 --> 00:38:10,000 la delegita de ĉi tiu teksto skatolo estos iu celo. 712 00:38:10,000 --> 00:38:13,000 Kiam mi diras ke ĉi tiu estas delegito nun ke signifas, ke 713 00:38:13,000 --> 00:38:16,000 ĉiufoje kiam iu evento estus pafitaj en la teksta kadro 714 00:38:16,000 --> 00:38:18,000 prefere ol, havante registri ĝin aŭ io simila 715 00:38:18,000 --> 00:38:21,000 ĝi estas nur irante voki metodon en la delegita. 716 00:38:21,000 --> 00:38:24,000 Ekzemple, ene de mia teksto skatolo mi havas metodon por kiam mi premas 717 00:38:24,000 --> 00:38:27,000 ke faris butonon malsupre dekstre, 718 00:38:27,000 --> 00:38:30,000 kaj tiel anstataŭ registri eventa traktilo, kion mi povas diri estas 719 00:38:30,000 --> 00:38:34,000 teksto skatolo, tie estas objekto, kiun mi volas ke vi nomas metodo en 720 00:38:34,000 --> 00:38:37,000 ĉiufoje iu premas la farita butonon, 721 00:38:37,000 --> 00:38:40,000 kaj tio signifas ke tiu celo devas apliki iujn protokolo 722 00:38:40,000 --> 00:38:45,000 kiu diras mi promesas al difini kiuj faris butono ago, 723 00:38:45,000 --> 00:38:47,000 ĉar se ĝi ne difini tiu metodo kaj vi gazetaro farita, 724 00:38:47,000 --> 00:38:49,000 tiam tuj estos konfuza. 725 00:38:49,000 --> 00:38:55,000 >> Ni rigardu ekzemplon. 726 00:38:55,000 --> 00:38:58,000 Jen Mi simple havas unu teksta kadro, 727 00:38:58,000 --> 00:39:04,000 kaj unu el la ecoj de ĉi tiu teksto skatolo tien sur ĉi dekstra flanko estas la delegito. 728 00:39:04,000 --> 00:39:06,000 Tiu estas propraĵo de la klaso. 729 00:39:06,000 --> 00:39:09,000 Kion mi faris tie estas mi kontroli klakis, kaj mi trenis de ĉi loko sur ĉi tie 730 00:39:09,000 --> 00:39:13,000 al la vidpunkto adaptilo, kaj kiu diras nun la delegita de ĉi tiu teksto skatolo 731 00:39:13,000 --> 00:39:18,000 tuj estos la vido adaptilo. 732 00:39:18,000 --> 00:39:20,000 Tio signifas ke kiam iuj agoj okazas, prefere ol registri 733 00:39:20,000 --> 00:39:25,000 aparta okazaĵo manipuladores Mi volas ke vi sendu ilin al la delegita. 734 00:39:25,000 --> 00:39:28,000 Nun ni rigardu mian vidon adaptilo. 735 00:39:28,000 --> 00:39:32,000 Ene de la. H dosieron mi faris promeson. 736 00:39:32,000 --> 00:39:36,000 Mi promesis realigi iujn metodojn ene de tiu protokolo 737 00:39:36,000 --> 00:39:38,000 vokis UITextFieldDelegate, kaj denove, 738 00:39:38,000 --> 00:39:42,000 ĉi tiu estas nur iuj listo de iuj aĵoj kiuj mi povas elekti por apliki. 739 00:39:42,000 --> 00:39:46,000 >> Se mi venos ĉi tie en mia. M dosiero, mi implementado unu tia metodo. 740 00:39:46,000 --> 00:39:49,000 Mi nomis ĝin textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 ĉar tio kio estis nomita ene de la protokolo. 742 00:39:52,000 --> 00:39:57,000 Kaj nun kiam mi premas la butonon farita ene de tiu teksto kampo 743 00:39:57,000 --> 00:40:00,000 ĉi tiu estas kio okazas al get nomita, do mi ne registris okazaĵo traktilo. 744 00:40:00,000 --> 00:40:03,000 Mi konektis la delegito, kaj kiam ajn tiu okazaĵo estas pafita 745 00:40:03,000 --> 00:40:08,000 ĉi tiu estas la metodo kiu get nomita, do se mi venos ĉi tien al mia storyboard kaj ruli ĝin- 746 00:40:08,000 --> 00:40:11,000 dum ke tio ŝarĝo povas vidi kio estas tiu faras. 747 00:40:11,000 --> 00:40:13,000 Sur mia ekrano mi havas 2 aĵoj. 748 00:40:13,000 --> 00:40:16,000 Mi havas ĉi tiun tekston kampo, kaj mi havas ĉi etikedo. 749 00:40:16,000 --> 00:40:19,000 Mi simple dirante Mi volas la teksto de ĉi etikedo 750 00:40:19,000 --> 00:40:23,000 esti egala al kiom la uzanto tajpas en internon de la teksto kampo. 751 00:40:23,000 --> 00:40:26,000 Ĉi sekva linio tie estas simple metodo kiu mi vokas 752 00:40:26,000 --> 00:40:29,000 en la teksto kampo kiu diras mi volas ke vi kasxu la klavaro. 753 00:40:29,000 --> 00:40:33,000 Tiu estas ĝuste la arbitra metodo kiu Apple elektis. 754 00:40:33,000 --> 00:40:38,000 >> Denove, antaŭ ol mi faris ĉion, kion mi devis telegramon ĉio, do mi unue venis ĉi tien. 755 00:40:38,000 --> 00:40:42,000 El la vidpunkto controlador mi treni super la teksta kadro. 756 00:40:42,000 --> 00:40:46,000 Mi lasas iri, kaj mi povas vidi ĉi tie ke mi povas fari ĉi la tekston kampo proprieto 757 00:40:46,000 --> 00:40:49,000 ekde ĉi tien en la vido controlador mi difinis proprieto 758 00:40:49,000 --> 00:40:52,000 ke estas IBOutlet de teksto kampo. 759 00:40:52,000 --> 00:40:55,000 Ĉi tio diras, ke mi povas telegramon ĉi tiu propraĵo supren 760 00:40:55,000 --> 00:40:59,000 al teksto kampo en mia UI. 761 00:40:59,000 --> 00:41:03,000 Nun kiam mi premas tio mi povas ektajpu. 762 00:41:03,000 --> 00:41:06,000 Nun, se mi premas la faritaj butonon ĉi tuj pafi 763 00:41:06,000 --> 00:41:08,000 evento, kiun mi povas nun respondi al. 764 00:41:08,000 --> 00:41:10,000 Neniu evento manipuladores. 765 00:41:10,000 --> 00:41:13,000 Tiel estas kiel mi ĵus respondis al tiu farita butonon. 766 00:41:13,000 --> 00:41:15,000 Sencon? 767 00:41:15,000 --> 00:41:20,000 >> Ĉi tio ne estas dezajno pattern that-vi eble neniam trovos vin mem 768 00:41:20,000 --> 00:41:23,000 krei vian propran protokolon, sed nur scias, ke iuj 769 00:41:23,000 --> 00:41:27,000 malsamaj iOS komponantoj registri eventoj en malsamaj manieroj. 770 00:41:27,000 --> 00:41:29,000 Butonoj, ekzemple, uzi tiujn IBActions. 771 00:41:29,000 --> 00:41:32,000 Teksto kampoj, aliflanke, tuj uzos delegitoj. 772 00:41:32,000 --> 00:41:36,000 Ni povas vidi kaj vi povas rigardi ĉiujn ke ĝis interne de la dokumentado. 773 00:41:36,000 --> 00:41:41,000 Parenteze, estas reale ton de UI stuff konstruita en iOS por vi, 774 00:41:41,000 --> 00:41:46,000 tiel ekzemple, la vojo kiun mi faris, ke oni dirus farita ĉe la malsupro dekstra 775 00:41:46,000 --> 00:41:48,000 estas mi elektis tiun tekston kampo. 776 00:41:48,000 --> 00:41:50,000 Mi venis ĉi tien. 777 00:41:50,000 --> 00:41:53,000 Mi scrolled malsupren iom reveni ŝlosilo, 778 00:41:53,000 --> 00:41:56,000 kaj mi povas efektive fari ĉi tutan faskon da aferoj, kiel se mi volas ke diri 779 00:41:56,000 --> 00:42:00,000 kriz nomas anstataŭ mi povas fari tion, kio estas tute hazarda, 780 00:42:00,000 --> 00:42:02,000 kaj mi ne scias kial estas enkonstruita en kriz alvoko butonon, 781 00:42:02,000 --> 00:42:06,000 sed tie, diras kriz voku vere malgrandaj literoj. 782 00:42:06,000 --> 00:42:08,000 Tie vi iros. 783 00:42:08,000 --> 00:42:12,000 >> Definitive esplori ĉiujn el tiuj malsamaj ebloj en iOS. 784 00:42:12,000 --> 00:42:14,000 Demandojn sur delegitoj? 785 00:42:14,000 --> 00:42:18,000 Denove, nur interesa dezajno ŝablono kiun ci devus konscii pri. 786 00:42:18,000 --> 00:42:22,000 Konsentite, ni sekva rigardu tablo opiniojn. 787 00:42:22,000 --> 00:42:26,000 Tabulo vidpunkto estas esence, ke listo de artikoloj kiuj estas en la tuta placo en iOS. 788 00:42:26,000 --> 00:42:29,000 Kiam vi flipping tra ĉiuj viaj kontaktoj, vi rigardas 789 00:42:29,000 --> 00:42:34,000 la opcio paĝo, kaj tia listo de aferoj nomiĝas tablo vido. 790 00:42:34,000 --> 00:42:37,000 Implementando tablo vido en iOS estas sufiĉe simpla. 791 00:42:37,000 --> 00:42:41,000 Anstataŭ fari klaso kiu desciende de tiu UIViewController 792 00:42:41,000 --> 00:42:44,000 kiel ni faris antaux ni simple devas eldiri anstataŭ 793 00:42:44,000 --> 00:42:46,000 ĉiun UIViewController tio mi volas fari, 794 00:42:46,000 --> 00:42:50,000 Mi diras ĉiun UITableViewController tio mi volas fari, 795 00:42:50,000 --> 00:42:54,000 por ke simple aldonas plian aĵoj kiuj estas plene farita por ni. 796 00:42:54,000 --> 00:42:58,000 Ni bezonas fari tre malmulta por esence spacplenigaj ene de la tablo. 797 00:42:58,000 --> 00:43:02,000 >> Por montri tablo mi bezonas por respondi kelkajn demandojn. 798 00:43:02,000 --> 00:43:06,000 La unua demando mi bezonas por respondi estas kiom da sekcioj estas en la tabulo? 799 00:43:06,000 --> 00:43:08,000 Kiam vi flipping tra viaj kontaktoj programo vi rimarkos ke ĝi estas speco de 800 00:43:08,000 --> 00:43:12,000 organizita de la mezuro, tiam vi havas la Bs, kaj vi havas tiun malgrandan sub kaploko. 801 00:43:12,000 --> 00:43:14,000 Ĉiu el tiuj nomiĝas sekcio. 802 00:43:14,000 --> 00:43:16,000 Vi povas aŭ ne bezonas tiujn. 803 00:43:16,000 --> 00:43:19,000 La unua kiu bezonas fari estas apliki metodon 804 00:43:19,000 --> 00:43:22,000 vokis tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Tio simple revenas kiom sekcioj havas, 806 00:43:25,000 --> 00:43:29,000 tiel ĉi povus diri reveni unu se vi havas unu grandan tablon vido. 807 00:43:29,000 --> 00:43:33,000 La sekva demando kiu iOS bezonas scii estas kiom da vicoj vi havas? 808 00:43:33,000 --> 00:43:36,000 Ekzemple, vi flipping tra tablo vido. 809 00:43:36,000 --> 00:43:39,000 Vi havas fiksan nombro de kantoj vi rigardas aŭ fiksa nombro de kontaktoj. 810 00:43:39,000 --> 00:43:41,000 Se vi estas mi, kompreneble, ne ke multaj, 811 00:43:41,000 --> 00:43:44,000 kaj por ke estas kiel iOS scias kiom da ĉeloj por montri. 812 00:43:44,000 --> 00:43:46,000 >> Denove, tio povus diri iun kiel reveno 3. 813 00:43:46,000 --> 00:43:49,000 Mia tablo view havas 3 vicoj. 814 00:43:49,000 --> 00:43:52,000 Fine, iOS bezonas scii kion ĉiu ĉelo similas, 815 00:43:52,000 --> 00:43:54,000 do kio ĝi estas vere tuj fari estas nomas tiun metodon cxi tie, 816 00:43:54,000 --> 00:43:57,000 ĉi tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Ĝi tuj nomas tiun metodon en ĉiu unuopa ĉelo ene de via tablo. 818 00:44:01,000 --> 00:44:03,000 Kiel ĝi scias kiom da fojoj nomi ĝin? 819 00:44:03,000 --> 00:44:06,000 Nu, vi rakontis ĝin ene de la numero de vicoj en sekcio. 820 00:44:06,000 --> 00:44:08,000 Ni tuj nomas tion sur ĉiu el niaj ĉeloj, 821 00:44:08,000 --> 00:44:11,000 kaj ene de ĉi tio estas, kie vi povas reale fari aferojn kiel 822 00:44:11,000 --> 00:44:16,000 starigis la teksto aŭ diri al vi kion tio iom blua butono ĉe la dekstra flanko faras. 823 00:44:16,000 --> 00:44:19,000 La mastro por atingi tiujn ĉelojn, ni tuj uzas tiun metodon 824 00:44:19,000 --> 00:44:22,000 vokis dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C estas vere tre bone konata pro la ridinda longo de lia metodo nomoj, 826 00:44:29,000 --> 00:44:32,000 kaj ĉi tiu estas vere bela kazo en punkto ekzemplo. 827 00:44:32,000 --> 00:44:37,000 Kio ĉi metodo faras estas ĉi nur diras mi volas ke vi donu al mi ĉelo. 828 00:44:37,000 --> 00:44:39,000 Nur iOS afero. 829 00:44:39,000 --> 00:44:41,000 Se vi havas iun kiel 100.000 kantoj sur via iPod 830 00:44:41,000 --> 00:44:45,000 kio iOS ne volas fari estas atribui 100.000 ĉeloj, 831 00:44:45,000 --> 00:44:48,000 ĉar se vi estas ĉe la supro de via listo, vi vere bezonas rezervi memoron 832 00:44:48,000 --> 00:44:51,000 por la ĉelo kiu estas 99.000 vicoj malsupren? 833 00:44:51,000 --> 00:44:55,000 Ne, ĉar kiel vi movo vi povas ia destini kiel vi iros kune. 834 00:44:55,000 --> 00:44:57,000 Ĉi tiu estas farita por vi. 835 00:44:57,000 --> 00:44:59,000 Vi ne bezonas zorgi pri ĉio, kion stultan agadon stuff. 836 00:44:59,000 --> 00:45:02,000 Ĉiuj vi diras estas vi nomas tiun metodon dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 kaj ĉi tio diras, estas bone, se vi bezonas ilin tuj krei novajn ĉelo por vi. 838 00:45:06,000 --> 00:45:09,000 >> Sed se vi estas sur la fundo de la tablo kaj vi jam asignitaj iuj ĉeloj 839 00:45:09,000 --> 00:45:12,000 ĉe la supro de la tablo, ke vi vere ne tuj bezonos aùton frue 840 00:45:12,000 --> 00:45:15,000 Mi tuj donos al vi unu el tiuj reen anstataŭ atribui nova, 841 00:45:15,000 --> 00:45:17,000 kaj tiel ĉi tiu estas bona agado maltrankvilo. 842 00:45:17,000 --> 00:45:21,000 Vi ne devas atribui la ĉeloj mem. 843 00:45:21,000 --> 00:45:23,000 Tio tuj donas vin ĉelo. 844 00:45:23,000 --> 00:45:25,000 Oni tuj revenos al vi ĉelo objekto. 845 00:45:25,000 --> 00:45:28,000 Kiam vi havas la ĉelo objekto povas fari aferojn al ĝi. 846 00:45:28,000 --> 00:45:32,000 Vi povas agordi la teksto de la ĉelo kun ĉi tiu propraĵo nomata teksto stampo. 847 00:45:32,000 --> 00:45:36,000 Vi povas aldoni ke sago dekstre aŭ iu alia hazarda stuff 848 00:45:36,000 --> 00:45:41,000 kun tiu alia propraĵo nomata accessoryType, kaj tiel plu kaj tiel plu. 849 00:45:41,000 --> 00:45:46,000 >> Ni rigardu efektive apliki tablo view nun. 850 00:45:46,000 --> 00:45:49,000 Kiam mi kreis ĉi tiun projekton 851 00:45:49,000 --> 00:45:53,000 anstataŭ diri sola vido apliko mi fakte venis ĉi tien 852 00:45:53,000 --> 00:45:57,000 al sinjoro-detalo apliko, kaj tiel esence ĉi tiu korespondas al la poŝto programo 853 00:45:57,000 --> 00:46:01,000 sur la iPad kun la tablo vido sur la maldekstra kaj tiam la enhavon dekstre. 854 00:46:01,000 --> 00:46:07,000 En la iPod aŭ iPhone ĉi tuj respondas al sola tablo vido. 855 00:46:07,000 --> 00:46:10,000 Tie estas kie mi atingis mian malfermilo kodo. 856 00:46:10,000 --> 00:46:13,000 >> Ni unue rigardu la storyboard. 857 00:46:13,000 --> 00:46:15,000 Ĉio ĉi estis farita por mi, esence kreita. 858 00:46:15,000 --> 00:46:18,000 Ĉi navigado trinkejo montris al mi kion ekzemplo ĉelo povus aspekti, 859 00:46:18,000 --> 00:46:22,000 kaj mi povas duobla klaku ĉi, ŝanĝi la titolon. 860 00:46:22,000 --> 00:46:25,000 Ajna alia UI zorgojn Mi povas manipuli tie. 861 00:46:25,000 --> 00:46:27,000 La kapdosiero aspektas vere simpla. 862 00:46:27,000 --> 00:46:30,000 Anstataŭ diri ĉi estas UIViewController ni nun dirante tio estas 863 00:46:30,000 --> 00:46:35,000 TableViewController, do ni scias, ke ni volas nomi tiujn tablo metodoj. 864 00:46:35,000 --> 00:46:38,000 Sekva mi volas krei proprieto kiu tuj reprezenti 865 00:46:38,000 --> 00:46:40,000 la aferojn interne de mia tablo. 866 00:46:40,000 --> 00:46:43,000 Ĉi tiu tabelo tuj arbitre montri 867 00:46:43,000 --> 00:46:46,000 listo de frukto, do mi devas krei iu tabelo 868 00:46:46,000 --> 00:46:49,000 en kiu mi povas enmeti frukton. 869 00:46:49,000 --> 00:46:52,000 Ene de mia efektivigo dosiero la unua afero, kiun mi volas fari 870 00:46:52,000 --> 00:46:55,000 Estas mi volas certigi min pravalorizi ĉi tabelo. 871 00:46:55,000 --> 00:46:58,000 >> Mi diris alloc init, kreita mia frukto tabelo, 872 00:46:58,000 --> 00:47:03,000 kaj mi aldonas 4 aĵoj al ĝi, unu el kiuj estas multe pli polemika ol la aliaj 3. 873 00:47:03,000 --> 00:47:06,000 Kaj nun mi havas aron de amplekso 4. 874 00:47:06,000 --> 00:47:08,000 Ni skuante ĝin en CS50. 875 00:47:08,000 --> 00:47:11,000 Mi nun havas aron de amplekso 4. 876 00:47:11,000 --> 00:47:13,000 Nun mi iros por komenci respondi tiujn demandojn, kaj fakte, 877 00:47:13,000 --> 00:47:16,000 kiam mi kreis ĉi tiun programon ĉio ĉi estis jam faris por mi. 878 00:47:16,000 --> 00:47:19,000 Mi ne devis tajpi el la nombro de sekcioj en tabelo vido. 879 00:47:19,000 --> 00:47:22,000 Estis jam ekzistas, kaj mi plenigas de spacoj. 880 00:47:22,000 --> 00:47:24,000 Kiom da sekcioj mi havas? 881 00:47:24,000 --> 00:47:26,000 Unu. Ĉiuj faris. 882 00:47:26,000 --> 00:47:28,000 Kiom da vicoj mi havas? 883 00:47:28,000 --> 00:47:31,000 Nu, mi havas unu vicon por ĉiu frukto, do ĉi grafo 884 00:47:31,000 --> 00:47:34,000 estas propraĵo de neniu tabelo kiu diras kiom granda ĝi estas? 885 00:47:34,000 --> 00:47:36,000 Tio estas, kiom da vicoj mi havas. 886 00:47:36,000 --> 00:47:42,000 Fine, mi bezonas diri kion signifas ĉiu ĉelo aspektas? 887 00:47:42,000 --> 00:47:46,000 Mi intencis diri dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Denove, ĉi estis jam skribita por mi. 889 00:47:48,000 --> 00:47:51,000 Mi ne devis fari ĉi mi mem, kaj mi volas reiri 890 00:47:51,000 --> 00:47:54,000 ĉi tiu ĉelo en ĉi loko. 891 00:47:54,000 --> 00:47:57,000 Memoru ke ni alvokas tiun saman metodon en ĉiu unuopa ĉelo, 892 00:47:57,000 --> 00:48:01,000 kaj ĉi tiu argumento tie, ĉi indexPath argumento, 893 00:48:01,000 --> 00:48:03,000 diras kion vico mi in 894 00:48:03,000 --> 00:48:05,000 Se mi diras indexPath.row cxi tie 895 00:48:05,000 --> 00:48:09,000 ĉi tio estos 0, tiam ĝi estos esti 1, tiam ĝi estos 2, kaj ĉi tio estas tiel Mi scias 896 00:48:09,000 --> 00:48:11,000 kio ĉelo Mi aktuale montri. 897 00:48:11,000 --> 00:48:15,000 Mi volas meti la tekston de la ĉelo uzante ĉi textLabel proprieto 898 00:48:15,000 --> 00:48:19,000 iri interne mia frukto tabelo kaj akiri 899 00:48:19,000 --> 00:48:21,000 la objekto responda al ĉiu vico. 900 00:48:21,000 --> 00:48:24,000 Se ĉi tiu estas ĉeno, mi nun opcio 901 00:48:24,000 --> 00:48:28,000 la teksto proprieto al ĉeno. 902 00:48:28,000 --> 00:48:30,000 Mi povas fari unu alia afero. 903 00:48:30,000 --> 00:48:32,000 Mi povas ankaŭ registri okazaĵo traktilo sur ĉiu de la ĉeloj, 904 00:48:32,000 --> 00:48:35,000 do kiam mi tap ĉiu de tiuj ĉeloj 905 00:48:35,000 --> 00:48:39,000 ĉi didSelectRowAtIndexPath, ĉi tiu tuj estos nomata por mi, 906 00:48:39,000 --> 00:48:42,000 tiel simple per difinanta tio mi povas nun manipuli kio okazas 907 00:48:42,000 --> 00:48:46,000 kiam vi tap ĉelo, kaj denove, ni pasas en kiu ĉelo estis frapetis 908 00:48:46,000 --> 00:48:50,000 por ke ni povas reuzi tiun saman eventa traktilo por ĉiuj niaj ĉeloj. 909 00:48:50,000 --> 00:48:53,000 >> Denove, tio estas io iOS faras por mi. 910 00:48:53,000 --> 00:48:55,000 Ni montros alian tedas ŝprucfenestron 911 00:48:55,000 --> 00:48:59,000 kiuj simple diras vi prenas ion kie ke io 912 00:48:59,000 --> 00:49:04,000 tuj estos la vico objekto. 913 00:49:04,000 --> 00:49:10,000 Kiam mi kuras ĉi, mi iros al havi tiun belan tablon vido 914 00:49:10,000 --> 00:49:14,000 kun unu linio por ĉiu el tiuj fruktoj, kaj se mi tap unu 915 00:49:14,000 --> 00:49:16,000 ĝi diras al mi kio okazis. 916 00:49:16,000 --> 00:49:21,000 Sencon? 917 00:49:21,000 --> 00:49:24,000 Ni konstruu iomete pli kompleksa de app, 918 00:49:24,000 --> 00:49:28,000 kiom klakante vi plukis tomato estas. 919 00:49:28,000 --> 00:49:31,000 La belan parton pri la storyboarding 920 00:49:31,000 --> 00:49:35,000 Estas ĝi estas ne nur helpos nin dezajno ekranoj individue, 921 00:49:35,000 --> 00:49:38,000 ĝi estas ankaŭ helpos al ni ligi kune nian tutan app, 922 00:49:38,000 --> 00:49:42,000 do la fina programo ni estos konstruaĵo estas ĉi bela sportoj novaĵlegilo, 923 00:49:42,000 --> 00:49:45,000 kaj tiel ĝi tuj devos multnombraj ekranoj, kaj do mi povas fakte reprezentas 924 00:49:45,000 --> 00:49:48,000 ĉiu el tiuj multnombraj ekranoj sur la storyboard, 925 00:49:48,000 --> 00:49:52,000 kaj mi povas malzomi kaj rigardu mian programon de alta nivelo. 926 00:49:52,000 --> 00:49:55,000 >> Por krei novan elementon ene de mia storyboard 927 00:49:55,000 --> 00:49:59,000 estas vere simpla ene de Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Se mi volas aldoni alian ekranon por tio, ekzemple, 929 00:50:01,000 --> 00:50:06,000 Mi povas unue malzomi kun la pinĉaĵon zoom ke Apple amas tiom, 930 00:50:06,000 --> 00:50:09,000 kaj cxi tie antaux Mi serĉi butono 931 00:50:09,000 --> 00:50:12,000 kaj mi treni kaj faligi butonon 932 00:50:12,000 --> 00:50:15,000 se mi volas krei novan ekranon mi povas fakte nur treni kaj faligi 933 00:50:15,000 --> 00:50:19,000 tutan vidon adaptilo, do se mi elektas tion, tiri ĝin ĉi tie, 934 00:50:19,000 --> 00:50:23,000 hey, ekzistas alia ekrano, kaj tiel nun uzas tiun ĉi saman storyboard dosieron 935 00:50:23,000 --> 00:50:26,000 Mi povas havi ĉiujn ekranojn interne de mia programo, kaj mi povas malzomi 936 00:50:26,000 --> 00:50:28,000 kaj vidi kiel interagi. 937 00:50:28,000 --> 00:50:32,000 Tiuj ne interagas ankoraŭ. 938 00:50:32,000 --> 00:50:36,000 La maniero en kiu tiuj 2 ekranoj interagi estas vi difinas rilatojn. 939 00:50:36,000 --> 00:50:39,000 Vi povas esence diras ekrano, kiam vi premas tiun butonon, 940 00:50:39,000 --> 00:50:42,000 Mi volas vin gliti sur ĉi tiu nova ekrano. 941 00:50:42,000 --> 00:50:44,000 Tio signifas ke estas ĉi tia rilato inter 942 00:50:44,000 --> 00:50:46,000  la unua ekrano kaj la dua ekrano. 943 00:50:46,000 --> 00:50:49,000 Vi devos esence sago de tiu butono por la dua ekrano 944 00:50:49,000 --> 00:50:53,000 dirante, ke kiam vi premas tiun butonon estas kie mi volas foriri. 945 00:50:53,000 --> 00:50:57,000 Samkiel ni Kontrolo klakis kaj trenis difini tiuj fontoj 946 00:50:57,000 --> 00:51:01,000 ni tuj faros la samon por difini tiujn segues. 947 00:51:01,000 --> 00:51:05,000 >> Ni vidos ekzemplon por tio, kaj antaŭ ni efektive transiro 948 00:51:05,000 --> 00:51:08,000 de unu ekrano al alia iOS estas bela sufiĉas nomi tiun metodon 949 00:51:08,000 --> 00:51:11,000 vokis prepareForSegue, kaj ĉi tiu estas kie ni povas komenci 950 00:51:11,000 --> 00:51:14,000 sendi datumojn de unu programo al alia. 951 00:51:14,000 --> 00:51:17,000 En la ekzemplo ni pri rigardi ĝin estos esence permesi al ni 952 00:51:17,000 --> 00:51:20,000 filtri bazpilkado teamoj de ligoj kaj dividojn. 953 00:51:20,000 --> 00:51:23,000 Kiam mi elektu ligo, ekzemple, mi volas transiro 954 00:51:23,000 --> 00:51:25,000 al mia sekva ekrano kie mi povas montri ĉiujn dividojn 955 00:51:25,000 --> 00:51:27,000 en tiu ligo aŭ ĉiuj malsamaj teamoj. 956 00:51:27,000 --> 00:51:31,000 Mi bezonas sendi al tiu ekrano kio teamoj vi devus montri. 957 00:51:31,000 --> 00:51:35,000 Por fari tion mi iros por utiligi tiun metodon tie. 958 00:51:35,000 --> 00:51:39,000 >> Fine, nur hazarda punkto sur iOS. 959 00:51:39,000 --> 00:51:41,000 Se vi volas konservi datumoj ekzistas tiu afero nomata kerno datumoj, 960 00:51:41,000 --> 00:51:44,000 kiu estas fakte ia komplika por labori kun. 961 00:51:44,000 --> 00:51:47,000 Vi povas ankaŭ uzi SQL stoki datumojn, 962 00:51:47,000 --> 00:51:51,000 kiu, denove, estas agrabla sed speco de la pli komplika flanko labori kun, 963 00:51:51,000 --> 00:51:55,000 sed iOS ankaŭ apogas tiujn vere malvarmeta aĵoj nomata propraĵo lertaj, 964 00:51:55,000 --> 00:52:00,000 kaj proprieto listo estas nur dosiero kiu reprezentas ŝlosilo valoro paroj. 965 00:52:00,000 --> 00:52:03,000 Vi difinas liston de klavoj, kaj vi tion diras ŝlosilo tuj estos tabelo. 966 00:52:03,000 --> 00:52:06,000 Ĉi tiu ŝlosilo tuj estos ŝnuro, kaj esence io vi povas fari 967 00:52:06,000 --> 00:52:10,000 en JSON vi povas fari ene de proprieto listo, 968 00:52:10,000 --> 00:52:14,000 kaj tiel ĉi vere bele nin permesas labori kun iuj datumoj. 969 00:52:14,000 --> 00:52:18,000 Ekzemple, mi havas ĉi Teams.plist ke mi kreis. 970 00:52:18,000 --> 00:52:22,000 Mi kreis novan plist dosiero, kaj mi povas sondi sube. 971 00:52:22,000 --> 00:52:26,000 Tiu estas vortaro, ĉi tiu estas vortaro, ĉi tiuj estas ŝnuroj, 972 00:52:26,000 --> 00:52:30,000 kaj tiel ĉi tiu estas bela grafika prezento de JSON dokumenton 973 00:52:30,000 --> 00:52:33,000 aŭ nur aro de ŝlosila valoro paroj, 974 00:52:33,000 --> 00:52:37,000 kaj tiel ĉi tiu estas la datumoj kiujn mi povas labori kun interne de mia programo. 975 00:52:37,000 --> 00:52:40,000 >> Ni unue veni tien. Ni havas multe pli dosieroj nun. 976 00:52:40,000 --> 00:52:44,000 Sed ni unue venis tien al la storyboard. 977 00:52:44,000 --> 00:52:48,000 La storyboard tie-se mi povas malzomi- 978 00:52:48,000 --> 00:52:51,000 ni povas nun vidi ke tiu estas la fluon de mia programo. 979 00:52:51,000 --> 00:52:53,000 Mi unue tuj komencos ĉi ekrano. 980 00:52:53,000 --> 00:52:55,000 Mi iros por sondi al tiu ekrano, 981 00:52:55,000 --> 00:52:58,000 kaj mi tuj sondi al tiu ekrano, kaj ni povas vidi ĉi tie ke se mi specon de 982 00:52:58,000 --> 00:53:04,000 movi unu el tiuj ĉirkaŭ ni tiujn sagoj tuj de tie al tie, 983 00:53:04,000 --> 00:53:08,000 kaj la vojon mi difinus ke sago estis se mi zomi iom, 984 00:53:08,000 --> 00:53:12,000 kaj se mi venos pli al tiu vidpunkto adaptilo, 985 00:53:12,000 --> 00:53:16,000 kaj jen ĉelo, kaj mi volas diri ke, kiam vi tap ĉelo 986 00:53:16,000 --> 00:53:18,000 Mi volas vin gliti sur al alia ekrano. 987 00:53:18,000 --> 00:53:21,000 Mi povas simple premadu kontrolo, 988 00:53:21,000 --> 00:53:26,000 rulumu super iomete, premadu kontrolo, treni tiun ĉelon kaj lasis iri. 989 00:53:26,000 --> 00:53:30,000 >> Kaj super tie ni diras kio estas la transiro, ke vi volas uzi? 990 00:53:30,000 --> 00:53:32,000 Ĉu vi volas uzi tiun slide kiu nomas puŝo? 991 00:53:32,000 --> 00:53:34,000 Ĉu vi volas gliti el la fundo? 992 00:53:34,000 --> 00:53:36,000 Tio nomiĝas modala. 993 00:53:36,000 --> 00:53:40,000 Kaj iam mi premas unu el tiuj, tio okazas por desegni tiun sagon por mi, 994 00:53:40,000 --> 00:53:44,000 kaj tio signifas ke mi reale manipulitaj kio okazas kiam mi premas tiun butonon grafike. 995 00:53:44,000 --> 00:53:48,000 Mi ne skribis ajna kodo por fakte gliti de unu ekrano al la sekva. 996 00:53:48,000 --> 00:53:51,000 Mi difinis ĉi vide ene de Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Se mi alklaku ĉi sago, ni povas vidi ke mi donis tiun aferon nomon. 998 00:53:55,000 --> 00:53:59,000 Mi vokis ĝin showDivisions, kaj ĉi tiu estas tiel, ke mi povas scii 999 00:53:59,000 --> 00:54:03,000 kio transiro estas por okazi, kaj ni vidos kial en nur sek. 1000 00:54:03,000 --> 00:54:06,000 Tiel estas kiel mi telegramis ĝis la malsamaj ekranoj en mia programo. 1001 00:54:06,000 --> 00:54:09,000 Se ĉi tiu estis butono, ekzemple, anstataŭ tablo vido, 1002 00:54:09,000 --> 00:54:11,000 Mi povus kontroli alklaku la butonon, treni super al la sekvanta ekrano, 1003 00:54:11,000 --> 00:54:16,000 kaj tiel estas kiel mi povas fari navigado tiu vojo. 1004 00:54:16,000 --> 00:54:19,000 >> Vere rapide, se ni venos en la MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 denove, ni simple tuj difini liston de aferoj 1006 00:54:22,000 --> 00:54:26,000 ke estos montrata en la tabulo vido. 1007 00:54:26,000 --> 00:54:29,000 Jen mi estas diranta Mi volas ke vi prenas tiun plist dosiero, 1008 00:54:29,000 --> 00:54:32,000 kaj mi volas ke vi montru gxin en vortaro, 1009 00:54:32,000 --> 00:54:35,000 kaj kiam vi havas tiun vortaron, mi tuj respondos tiujn samajn demandojn denove. 1010 00:54:35,000 --> 00:54:37,000 Jen estas la nombro de sekcioj. 1011 00:54:37,000 --> 00:54:41,000 Unu, estas unu linio por ĉiu ligo, kaj la teksto de ĉiu ĉelo 1012 00:54:41,000 --> 00:54:46,000 devus esti ĉu la unua, la unua ligo, la dua ligo, kaj tiel plu. 1013 00:54:46,000 --> 00:54:51,000 Fine, mi tuj uzos tiun metodon kiun ni ĵus vidis nomita prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 kaj ĉi tiu estas la metodo kiu tuj esti pafitaj kiam mi premas 1015 00:54:54,000 --> 00:54:57,000 sur unu el tiuj vicoj kaj sekve aktivigante ke transiro 1016 00:54:57,000 --> 00:54:59,000 ke mi starigis kun la sagoj. 1017 00:54:59,000 --> 00:55:02,000 Tiu diras ke mi povas havi plurajn 1018 00:55:02,000 --> 00:55:05,000 rilatoj de unu ekrano al alia. 1019 00:55:05,000 --> 00:55:08,000 Se mi havas 2 butonoj kaj ĉiu butono prenas vin al malsama ekrano 1020 00:55:08,000 --> 00:55:10,000 Mi tuj havas 2 segues, 1 por ĉiu butono. 1021 00:55:10,000 --> 00:55:14,000 Sed ĉi prepareForSegue estas, denove, tuj estos reuzata 1022 00:55:14,000 --> 00:55:17,000 por ĉiu el la diversaj interrilatoj, do tio signifas, ke mi bezonas vojo 1023 00:55:17,000 --> 00:55:21,000 de identigi se vi premas la unua butono aŭ vi premas la dua butono. 1024 00:55:21,000 --> 00:55:25,000 >> Memoru, kiam mi donis tiun segue nomon, ĉi showDivisions, 1025 00:55:25,000 --> 00:55:29,000 tiel estas kiel mi nun scias ke tiu estas la segue kiu aktivigita. 1026 00:55:29,000 --> 00:55:32,000 Mi nur volas fari estas mi volas diri 1027 00:55:32,000 --> 00:55:35,000 Mi volas kompreni pri kio mi ĵus batis, 1028 00:55:35,000 --> 00:55:38,000 kaj tiel akiri tion, mi povas diri mi volas ke la indexPath por la elektita vico, 1029 00:55:38,000 --> 00:55:42,000 memori la indexPath nur diras kie mi ĵus klakis, 1030 00:55:42,000 --> 00:55:47,000 kaj tiam mi volas diri ke mi volas eltrovi kie mi iras. 1031 00:55:47,000 --> 00:55:50,000 Ĉi destinationViewController, tio estas propraĵo de la segue. 1032 00:55:50,000 --> 00:55:53,000 Tio estas la ekrano mi tuj, 1033 00:55:53,000 --> 00:55:56,000 do mi scias ke la ekrano mi tuj nomas DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 ĉar mi kreis tiun klason, 1035 00:55:59,000 --> 00:56:02,000 kaj nun, se mi diros d.divisions 1036 00:56:02,000 --> 00:56:06,000 Mi nun opcio propraĵo de la vido controlador mi ironta al. 1037 00:56:06,000 --> 00:56:10,000 Jen kiel mi sendas datumojn de unu ekrano al alia ekrano. 1038 00:56:10,000 --> 00:56:13,000 >> Nur rigardante ĉi DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 vi povas vidi ĉi tie ke en la. h dosieron 1040 00:56:16,000 --> 00:56:20,000 estas tiu bieno dividojn, kaj tio estas kion mi esence popolante, 1041 00:56:20,000 --> 00:56:25,000 do tiel estas kiel mi scias, ke mi montri la dividojn responda al 1042 00:56:25,000 --> 00:56:28,000 la ligo kiun mi klakis, kaj denove, 1043 00:56:28,000 --> 00:56:31,000 la reala tablo vido aspektas preskaux la samo, nur respondi tiujn 1044 00:56:31,000 --> 00:56:34,000 3 simplaj demandoj tiel kiel identigi 1045 00:56:34,000 --> 00:56:37,000 kio okazas kiam vi movas al la sekvanta ekrano. 1046 00:56:37,000 --> 00:56:40,000 Nur kelkaj aliaj aferoj ĉi tie. 1047 00:56:40,000 --> 00:56:43,000 Vi rimarkos supre tie anstataŭ diri # include 1048 00:56:43,000 --> 00:56:45,000 Mi nun dirante # importi. 1049 00:56:45,000 --> 00:56:47,000 Tiu estas nur Objective-C afero. 1050 00:56:47,000 --> 00:56:52,000 La importado estas esence pli agrablan versio de inkluzivas, 1051 00:56:52,000 --> 00:56:57,000 kaj ekzemple, ni bezonas scii kio estas tiu klaso estas, 1052 00:56:57,000 --> 00:57:00,000 do mi ne povas simple diri DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Se ni ne hashtag standardio.c ene de nia. C dosieron 1054 00:57:05,000 --> 00:57:07,000 la tradukilo ne havis ideon kio printf estis. 1055 00:57:07,000 --> 00:57:12,000 Simile, se mi ne importi la DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 la tradukilo vere havas nenian ideon kia DivisionsViewController estas. 1057 00:57:16,000 --> 00:57:19,000 Nur certigi ke ene de via malsama. M dosieroj vi certigi por importi 1058 00:57:19,000 --> 00:57:25,000 la responda. h dosierojn por ke la tradukilo scias kio okazas. 1059 00:57:25,000 --> 00:57:31,000 >> Fine, kio Apple finfine ne estas montri iuj datumoj uzante retejo vido, 1060 00:57:31,000 --> 00:57:35,000 kaj tiel retejo vido estas objekto en kiu vi povas enigi 1061 00:57:35,000 --> 00:57:37,000 iom retumilo ene de via programo. 1062 00:57:37,000 --> 00:57:40,000 Vi bezonas fari estas provizi URL al via retumilo, 1063 00:57:40,000 --> 00:57:43,000 do mi volas iri al mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 kaj ĉi tiu estas kiel mi povas aliri la hejmpaĝo por ĉiu teamo, 1065 00:57:46,000 --> 00:57:49,000 kaj tiel per pasante en ĉi URL 1066 00:57:49,000 --> 00:57:52,000 la TTT-vido povas montri tion por mi, kaj mi povas foliumi ĉirkaŭe, 1067 00:57:52,000 --> 00:58:01,000 kaj simulilo estas en uzo por tiu. 1068 00:58:01,000 --> 00:58:03,000 Nun tio venis de mia plist. 1069 00:58:03,000 --> 00:58:07,000 Se mi klaku ĉi tiu ankaŭ venis de mia plist, kaj ĉi deslizante estis manipulita 1070 00:58:07,000 --> 00:58:09,000 per difinanta tiuj segues. 1071 00:58:09,000 --> 00:58:12,000 Mi klaku ĉi kaj unu pli, 1072 00:58:12,000 --> 00:58:15,000 kaj nun jen mia UIWebView, do ĝuste kiel ke 1073 00:58:15,000 --> 00:58:19,000 jen la retejo por la URL kiun mi ĵus enigita, 1074 00:58:19,000 --> 00:58:21,000 kaj mi ne devis manipuli ion frenezan. 1075 00:58:21,000 --> 00:58:24,000 Tiel estas kiel por montri retpaĝo. 1076 00:58:24,000 --> 00:58:27,000 Aĵoj kiel ĉi reen butono tie estas ankaŭ donita al mi 1077 00:58:27,000 --> 00:58:33,000 tute senpage ĉar mi difinis tiujn rilatojn uzante segues. 1078 00:58:33,000 --> 00:58:37,000 >> Demandojn? Yeah. 1079 00:58:37,000 --> 00:58:40,000 [Studenta] Do kiam vi uzas alloc, vi neniam devos libera ion? 1080 00:58:40,000 --> 00:58:43,000 Ĝuste, kiam vi nomas alloc kaj init vi ne devas liberigi ĝin. 1081 00:58:43,000 --> 00:58:46,000 IOS tuj manipuli ĉiuj, ke por vi. 1082 00:58:46,000 --> 00:58:51,000 Estas mirinda, kaj vi ne rompi ajna reguloj. Yeah. 1083 00:58:51,000 --> 00:58:54,000 [Studenta] Se vi estus por inkludi pli teamoj kiuj povus persvadi sur la ekrano, 1084 00:58:54,000 --> 00:58:58,000 ĉu aŭtomate havi skribrulajxon eblo, aŭ estas, ke io, kion vi bezonas aldoni? 1085 00:58:58,000 --> 00:59:01,000 Ĝuste, se mi havis pli teamoj, ekzemple, estus aŭtomate manipuli 1086 00:59:01,000 --> 00:59:04,000 la movo por mi, kaj la tuta agado zorgojn 1087 00:59:04,000 --> 00:59:08,000 kun la grandega tablo estas ankaŭ manipulitaj tute por mi. 1088 00:59:08,000 --> 00:59:11,000 >> Aliaj demandoj? 1089 00:59:11,000 --> 00:59:13,000 Ĉio ĉi kodo tuj estos eldonitaj. 1090 00:59:13,000 --> 00:59:16,000 Ni speco de glosó super iom el la pli malgrandaj detaloj, 1091 00:59:16,000 --> 00:59:19,000 sed aĵoj kiel opcio iuj propraĵoj de la TTT-vido 1092 00:59:19,000 --> 00:59:22,000 estas nur tion, kion vi povas akiri per foliumantaj Apple dokumentado, 1093 00:59:22,000 --> 00:59:24,000 kiu estas vere, vere bele metitaj. 1094 00:59:24,000 --> 00:59:27,000 Ili havas multe de specimeno apps kaj ekzemplo uzoj 1095 00:59:27,000 --> 00:59:34,000 de malsamaj API, do certe peruse tiuj se vi povas. 1096 00:59:34,000 --> 00:59:36,000 Nur kelkaj helpemaj ligiloj vi eble volas rigardi. 1097 00:59:36,000 --> 00:59:38,000 Ĉi tiuj estas iuj oportuna dokumentado gvidas. 1098 00:59:38,000 --> 00:59:41,000 La URL estas amasaj, do ili estas mallongigitaj. 1099 00:59:41,000 --> 00:59:44,000 Tiu unua estas la tuta biblioteko de dokumentaro. 1100 00:59:44,000 --> 00:59:46,000 Estas iom serĉo trinkejoj, do se vi komencas tajpi butono 1101 00:59:46,000 --> 00:59:50,000 ĝi komencos donas al vi la tutan informon pri cxio, vi povas fari kun butono. 1102 00:59:50,000 --> 00:59:53,000 Mi ankaŭ inkludis la Tablo Montri Programado Guide. 1103 00:59:53,000 --> 00:59:56,000 Ĝi manipulas tablo vidpunktoj en multe pli detale, 1104 00:59:56,000 --> 01:00:00,000 kiel fari tion kiel dinamike aldoni ĉeloj aŭ redakti ĉeloj aŭ forigi ilin. 1105 01:00:00,000 --> 01:00:02,000 >> Ekzistas multaj specimeno apps de Apple kiu montros al vi kiel fari tion, 1106 01:00:02,000 --> 01:00:05,000 kaj fine, ĉi lasta estas la Homaj Interfaco Gvidlinioj, 1107 01:00:05,000 --> 01:00:09,000 kaj ĉi tiu estas esence iu diskuto pri UI komponantoj, 1108 01:00:09,000 --> 01:00:12,000 aĵoj kiel ne fari butono kiu estas 4 rastrumeroj per 4 rastrumeroj. 1109 01:00:12,000 --> 01:00:15,000 Tio estas malbona ideo, kaj aliaj aĵoj ke Apple volas vi fari 1110 01:00:15,000 --> 01:00:18,000 instigi bonan dezajnon. 1111 01:00:18,000 --> 01:00:23,000 >> Ajna lasta demandojn antaŭ ol ni finos kolektis? 1112 01:00:23,000 --> 01:00:27,000 Bone, certe bonvolu-we're tuj havas specialajn etiketojn sur diskuti. 1113 01:00:27,000 --> 01:00:30,000 Ni havas iOS unu, do certe bonvolu uzi tion. 1114 01:00:30,000 --> 01:00:34,000 Se vi volas labori per viaj kompanoj en projektoj 1115 01:00:34,000 --> 01:00:37,000 aŭ helpi elŝeligi iu hazarda iOS stuff 1116 01:00:37,000 --> 01:00:40,000 bonvolu retpoŝti al mi, kaj certe peruse tuta kodo linio ĉar 1117 01:00:40,000 --> 01:00:43,000 nur en la intereso de tempo ni ia glosó super la pli 1118 01:00:43,000 --> 01:00:45,000 pli fajna akno detalojn de aferoj. 1119 01:00:45,000 --> 01:00:47,000 Sed se ne, tiam bona sorto en via iOS projektoj, kaj mi esperas ke ni havos 1120 01:00:47,000 --> 01:00:53,000 grandan enfluo de apps en la App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]