1 00:00:00,000 --> 00:00:11,420 2 00:00:11,420 --> 00:00:13,590 >> TIANYU LIU: Ehi, come è andando tutti? 3 00:00:13,590 --> 00:00:20,250 E questa è l'app iOS programmazione dell'obiettivo c seminario. 4 00:00:20,250 --> 00:00:21,520 E il mio nome è Tianyu Liu. 5 00:00:21,520 --> 00:00:26,114 Sono una junior Lowell in questo momento, concentrandosi in informatica. 6 00:00:26,114 --> 00:00:28,030 Quindi, in questo seminario sono andare a insegnare ragazzi 7 00:00:28,030 --> 00:00:30,770 un po 'su come fare un app. 8 00:00:30,770 --> 00:00:33,030 Yay, emozionarsi per esso. 9 00:00:33,030 --> 00:00:36,790 >> Quindi, prima ancora di iniziare le immersioni nel lato effettiva programmazione, 10 00:00:36,790 --> 00:00:41,840 diciamo solo molto velocemente parlare motivo per cui si potrebbe desiderare di costruire un app iOS? 11 00:00:41,840 --> 00:00:43,940 Perché iOS così impressionante? 12 00:00:43,940 --> 00:00:47,250 Quindi il primo problema, la prima cosa che è abbastanza impressionante per noi, 13 00:00:47,250 --> 00:00:51,190 soprattutto come CS50 studente, è che iOS 14 00:00:51,190 --> 00:00:55,860 utilizza Objective C. Bene, c'è un nuovo linguaggio chiamato Swift, 15 00:00:55,860 --> 00:00:58,260 ma non stiamo andando a utilizzare che in questo seminario. 16 00:00:58,260 --> 00:01:01,540 Se siete interessati a Swift, là è un seminario indipendente di questo. 17 00:01:01,540 --> 00:01:05,590 Ma Objective C è fondamentalmente un superset di C. Significato 18 00:01:05,590 --> 00:01:10,230 che tutto ciò che si utilizza in C può essere tradotto in Objective C 19 00:01:10,230 --> 00:01:11,630 molto facilmente. 20 00:01:11,630 --> 00:01:15,730 >> Come si può vedere in seguito, che in effetti ci sono una sintassi molto semplice, sono 21 00:01:15,730 --> 00:01:19,790 fondamentalmente esattamente lo stesso, C e Objective C. Quindi, 22 00:01:19,790 --> 00:01:22,860 dal momento che avete preso CS50 up fino a questo punto, è già 23 00:01:22,860 --> 00:01:26,500 conoscere Objective C, almeno il 40%. 24 00:01:26,500 --> 00:01:30,720 Inoltre, Apple ha davvero robusto API per iOS. 25 00:01:30,720 --> 00:01:33,750 Ci sono un sacco di veramente pazzesco cose che si possono fare con esso. 26 00:01:33,750 --> 00:01:36,760 Uno dei quali è qualcuno di fatto creato un app iOS 27 00:01:36,760 --> 00:01:40,600 per autoveicoli, che controllano è piuttosto interessante. 28 00:01:40,600 --> 00:01:42,610 Probabilmente un elicottero è più emozionante. 29 00:01:42,610 --> 00:01:47,020 Ma questo è quanto potente l'API iOS può essere. 30 00:01:47,020 --> 00:01:49,340 >> E come si potrebbe avere capito subito, 31 00:01:49,340 --> 00:01:53,000 l'overflow stack è probabilmente una le più importanti risorse online 32 00:01:53,000 --> 00:01:54,250 a vostra disposizione. 33 00:01:54,250 --> 00:01:58,090 E una buona notizia, per ogni singolo problema si può eventualmente 34 00:01:58,090 --> 00:02:01,840 pensare mentre la costruzione vostra progetto finale in Objective C, 35 00:02:01,840 --> 00:02:05,910 è probabile una risposta overflow dello stack. 36 00:02:05,910 --> 00:02:07,420 E 'semplicemente incredibile. 37 00:02:07,420 --> 00:02:12,780 In aggiunta a ciò, iOS è davvero una piattaforma 38 00:02:12,780 --> 00:02:16,260 dove si può raggiungere un enorme pubblico con poco sforzo. 39 00:02:16,260 --> 00:02:20,170 Non è come Android, dove tutto è piuttosto frammentato. 40 00:02:20,170 --> 00:02:22,540 >> Tutto iOS è unificato. 41 00:02:22,540 --> 00:02:25,920 E finché si creano un app per iPhone, 42 00:02:25,920 --> 00:02:31,260 si può molto facilmente porta a iPad, iPad mini, o diverse misure di iPhone. 43 00:02:31,260 --> 00:02:33,050 Questi sono tutti davvero conveniente. 44 00:02:33,050 --> 00:02:36,430 Ed è solo veramente buono per impressionare i vostri amici. 45 00:02:36,430 --> 00:02:38,920 Si può solo tenere un iPhone e dire al vostro amico hey, 46 00:02:38,920 --> 00:02:40,250 questa è l'applicazione che faccio. 47 00:02:40,250 --> 00:02:43,860 Si può fare che per ogni applicazioni desktop, che è bello. 48 00:02:43,860 --> 00:02:48,870 >> Bene, ora andiamo in realtà get nella lingua Objective C. 49 00:02:48,870 --> 00:02:52,910 Allora perché non si comincia con una sintassi molto semplice. 50 00:02:52,910 --> 00:02:57,410 Come ho detto prima Obiettivo C E 'fondamentalmente un superset di C. 51 00:02:57,410 --> 00:03:01,860 Così un sacco di sintassi di base sono realtà esattamente lo stesso. 52 00:03:01,860 --> 00:03:06,150 Dichiarare una variabile e aggiungendo due variabili insieme 53 00:03:06,150 --> 00:03:09,440 è esattamente come abbiamo fatto in Mario. 54 00:03:09,440 --> 00:03:11,140 Niente di nuovo qui. 55 00:03:11,140 --> 00:03:17,370 >> Allo stesso modo, l'inquilino ciclo for e condizione è anche lo stesso. 56 00:03:17,370 --> 00:03:22,370 Si può fare un ciclo for come te hanno fatto in un Mario [incomprensibile]. 57 00:03:22,370 --> 00:03:26,280 E si può fare condizioni proprio come quello che si 58 00:03:26,280 --> 00:03:29,240 avete fatto nei vostri set p precedenti. 59 00:03:29,240 --> 00:03:33,400 Tuttavia, Objective C Non è completamente C, 60 00:03:33,400 --> 00:03:36,640 e c'è qualcosa che è una specie di strano su di esso. 61 00:03:36,640 --> 00:03:42,340 >> Il primo è che quando si è facendo di programmazione C, in genere si chiama 62 00:03:42,340 --> 00:03:46,310 includere e quindi un nome di libreria. 63 00:03:46,310 --> 00:03:49,860 Ma in Objective C si chiama che l'importazione. 64 00:03:49,860 --> 00:03:53,100 Fondamentalmente dicendo funzionalità, solo nomi diversi. 65 00:03:53,100 --> 00:03:55,940 E le stringhe sono in realtà un po 'strano. 66 00:03:55,940 --> 00:03:58,250 Si può vedere che il primo cosa che è un po 'strano 67 00:03:58,250 --> 00:04:04,190 è che avete un bel weird-- sorry-- avete un bel strano NS 68 00:04:04,190 --> 00:04:04,960 firmare qui. 69 00:04:04,960 --> 00:04:07,452 70 00:04:07,452 --> 00:04:09,160 E la seconda cosa questo è un po 'strano 71 00:04:09,160 --> 00:04:14,090 è che hai una chiocciola prima in realtà dichiarando la stringa. 72 00:04:14,090 --> 00:04:19,209 Così il simbolo significa fondamentalmente che una stringa non è solo una stringa, 73 00:04:19,209 --> 00:04:20,880 in realtà è un oggetto. 74 00:04:20,880 --> 00:04:22,780 Stiamo andando a spiegare che poi così non fare 75 00:04:22,780 --> 00:04:25,800 panico se non lo fai capire che cosa significa. 76 00:04:25,800 --> 00:04:29,980 E la stampa di console è un po ' diverso perché in C che chiamiamo printf, 77 00:04:29,980 --> 00:04:33,350 ma in Objective C chiamiamo [incomprensibile]. 78 00:04:33,350 --> 00:04:35,640 >> Ci si potrebbe chiedere che cosa è quella. 79 00:04:35,640 --> 00:04:38,070 Questo è fondamentalmente printf, solo una lingua diversa. 80 00:04:38,070 --> 00:04:41,370 Esattamente lo stesso uso, esattamente la stessa funzionalità. 81 00:04:41,370 --> 00:04:44,060 Ebbene si scopre che Objective C realtà 82 00:04:44,060 --> 00:04:50,040 Ha un ns prefisso quasi ogni cosa, ogni tipo di dati di base, 83 00:04:50,040 --> 00:04:52,690 NSString, NSArray, NSDictionary. 84 00:04:52,690 --> 00:04:56,340 Il motivo è che ns in realtà l'acronimo di Next Step, 85 00:04:56,340 --> 00:04:59,980 che è una società che Steve Jobs ha fondato, 86 00:04:59,980 --> 00:05:03,960 che è una società dove la il linguaggio Objective C è nato. 87 00:05:03,960 --> 00:05:06,140 Quindi, questo è fondamentalmente la tradizione. 88 00:05:06,140 --> 00:05:09,010 So che è un po ' strano, ma è Apple. 89 00:05:09,010 --> 00:05:16,840 >> Quindi qualcosa che è ancora più strano quello è una dichiarazione di funzione. 90 00:05:16,840 --> 00:05:22,600 Questo è molto diverso da quello che abbiamo vedere in C, perché qui in realtà 91 00:05:22,600 --> 00:05:25,190 non sembra C più. 92 00:05:25,190 --> 00:05:28,810 Quello che hai qui-- dal modo questo non è un punto di proiettile, 93 00:05:28,810 --> 00:05:30,690 questo è un segno meno. 94 00:05:30,690 --> 00:05:36,440 Hai un segno meno tra parentesi nulla e quindi il nome della funzione. 95 00:05:36,440 --> 00:05:38,450 Diciamo se hanno ciao mondo, allora 96 00:05:38,450 --> 00:05:42,820 il tipo di ritorno sarebbe nullo perché torniamo nulla. 97 00:05:42,820 --> 00:05:44,680 >> Ciò che fa veramente strano è che quando sei 98 00:05:44,680 --> 00:05:49,580 avere più di un parametro passando in una stessa funzione che 99 00:05:49,580 --> 00:05:53,870 sarà davvero strano come mostrato qui. 100 00:05:53,870 --> 00:05:58,230 Abbiamo un nome di metodo, chiamato addInt a [incomprensibile] 101 00:05:58,230 --> 00:06:00,370 e stiamo passando un parametro. 102 00:06:00,370 --> 00:06:05,170 Ma dopo che abbiamo più chiamata nome del metodo con. 103 00:06:05,170 --> 00:06:08,500 E dopo con stiamo passando il secondo parametro. 104 00:06:08,500 --> 00:06:11,940 Questo è in realtà un po 'strano, ma tutte queste dichiarazioni di funzione 105 00:06:11,940 --> 00:06:14,770 seguire lo stesso schema questo. 106 00:06:14,770 --> 00:06:17,450 >> Abbiamo un segno meno per cominciare. 107 00:06:17,450 --> 00:06:21,550 Il segno meno potrebbe essere un segno più a volte in base a che tipo di metodo 108 00:06:21,550 --> 00:06:22,340 è esso. 109 00:06:22,340 --> 00:06:25,000 Metodo è fondamentalmente un altro nome per la funzione. 110 00:06:25,000 --> 00:06:26,760 E stiamo andando a spiegare che più tardi, quando 111 00:06:26,760 --> 00:06:30,580 stiamo parlando di oggetti programmazione orientata. 112 00:06:30,580 --> 00:06:34,300 Dopo l'introduzione di ritorno digitare parentesi all'interno, 113 00:06:34,300 --> 00:06:37,450 dopo di che viene il nome del metodo. 114 00:06:37,450 --> 00:06:40,310 Stai passando un parametro. 115 00:06:40,310 --> 00:06:44,750 E se avete più parametri è necessario estendere il nome del metodo 116 00:06:44,750 --> 00:06:46,770 e in fondo scrivere qualcosa di più qui. 117 00:06:46,770 --> 00:06:48,090 >> Potrebbe essere tutto quello che vuoi. 118 00:06:48,090 --> 00:06:50,140 Nel nostro caso si tratta di con. 119 00:06:50,140 --> 00:06:56,160 Ma si potrebbe dire fine, o, o, o abc bar completo, quello che volete. 120 00:06:56,160 --> 00:06:59,500 E poi, dopo che sei passando parametro b. 121 00:06:59,500 --> 00:07:01,750 Questo è un davvero strano convention ma siamo 122 00:07:01,750 --> 00:07:05,800 andare a capire perché Apple ha voluto di farlo molto rapidamente. 123 00:07:05,800 --> 00:07:10,530 Così come si chiama la funzione? 124 00:07:10,530 --> 00:07:15,520 Chiamare una funzione in Objective C è anche diverso da C. 125 00:07:15,520 --> 00:07:18,170 >> In realtà, chiamando un funzione in Objective C 126 00:07:18,170 --> 00:07:21,030 è più come stai parlando con qualcuno. 127 00:07:21,030 --> 00:07:27,030 Qui abbiamo sé, che è chiamato un oggetto. 128 00:07:27,030 --> 00:07:33,830 Tu sei fondamentalmente dicendo la opporsi sé per dire "Ciao Mondo!" 129 00:07:33,830 --> 00:07:36,830 Questo è il modo per chiamare la funzione. 130 00:07:36,830 --> 00:07:41,690 Un oggetto e un nome di metodo combinati tra loro. 131 00:07:41,690 --> 00:07:49,600 Ed è qui che l'estensione strano per nome del metodo davvero entra in gioco. 132 00:07:49,600 --> 00:07:52,150 >> Vediamo il secondo esempio. 133 00:07:52,150 --> 00:07:56,780 Abbiamo appena definito un metodo chiamato addInt con blah blah blah. 134 00:07:56,780 --> 00:08:00,066 Quindi, in questo caso, quando si sta chiamando che specifica [? messaggio?] sta andando 135 00:08:00,066 --> 00:08:02,035 a guardare come auto addInt: 10 con: 2. 136 00:08:02,035 --> 00:08:05,410 137 00:08:05,410 --> 00:08:08,070 Suona come l'inglese. 138 00:08:08,070 --> 00:08:11,980 Sebbene la funzione dichiarazione di funzione è strano, 139 00:08:11,980 --> 00:08:15,600 il punto di C di Obiettivo Metodo modello di dichiarazione, 140 00:08:15,600 --> 00:08:18,830 è che quando si sta chiamando la funzione o il metodo 141 00:08:18,830 --> 00:08:21,980 che suonerà come reale inglese. 142 00:08:21,980 --> 00:08:25,270 Quindi è molto intuitivo una volta che si entra in esso. 143 00:08:25,270 --> 00:08:28,740 >> Soprattutto in questo caso, dove si può sostanzialmente 144 00:08:28,740 --> 00:08:33,010 vedere che il nome della funzione è sorta di documentazione stessa. 145 00:08:33,010 --> 00:08:35,390 Non hai bisogno di alcuna ulteriori spiegazioni per vedere 146 00:08:35,390 --> 00:08:42,770 cosa sta succedendo, cosa esattamente un parametro che fa. 147 00:08:42,770 --> 00:08:48,470 Al di là di questo, parliamo un po ' po 'di programmazione orientata agli oggetti. 148 00:08:48,470 --> 00:08:52,160 Oggetto programmazione orientata uno della programmazione fondamentale 149 00:08:52,160 --> 00:08:57,110 tecniche o modelli che è usato da Objective C. Objective C 150 00:08:57,110 --> 00:09:03,110 si chiama Objective C non, C, per una buona ragione. 151 00:09:03,110 --> 00:09:07,560 >> Quindi, prima di entrare in Sintassi C Obiettivo, 152 00:09:07,560 --> 00:09:11,670 Diamo un'occhiata molto rapidamente a che cosa è esattamente un oggetto. 153 00:09:11,670 --> 00:09:15,480 Probabilmente abbiamo fatto qualcosa come oggetto prima che 154 00:09:15,480 --> 00:09:19,780 si chiama struct quando si è l'attuazione di un albero o una lista collegata 155 00:09:19,780 --> 00:09:25,730 o [? provare. ?] Quindi, è fondamentalmente come una struct, 156 00:09:25,730 --> 00:09:28,560 ma è molto più potente di quello. 157 00:09:28,560 --> 00:09:33,150 Un oggetto ha metodi e proprietà. 158 00:09:33,150 --> 00:09:35,310 I metodi sono fondamentalmente funzioni. 159 00:09:35,310 --> 00:09:39,480 FUNZIONI sostanza che un specifico per un determinato oggetto. 160 00:09:39,480 --> 00:09:45,440 >> E le proprietà sono fondamentalmente la campo si specifica nella struct. 161 00:09:45,440 --> 00:09:48,500 Così, per ogni singolo oggetto abbiamo qualche proprietà 162 00:09:48,500 --> 00:09:53,160 che ha alcune variabili che sono specifici per l'oggetto. 163 00:09:53,160 --> 00:09:57,170 E abbiamo alcune funzioni che sono anche specifici all'oggetto. 164 00:09:57,170 --> 00:10:01,180 E le funzioni sono chiamate metodi e le variabili sono chiamate proprietà. 165 00:10:01,180 --> 00:10:03,190 E 'solo un nome di fantasia. 166 00:10:03,190 --> 00:10:10,440 Mentre infatti, ogni singola vista si vede mentre si apre un app iOS, 167 00:10:10,440 --> 00:10:17,720 diciamo solo che Twitter o Facebook, ogni singola vista che si vede è un oggetto. 168 00:10:17,720 --> 00:10:22,110 E anche l'intera applicazione è un oggetto per cominciare. 169 00:10:22,110 --> 00:10:25,340 Molto interessante concept. 170 00:10:25,340 --> 00:10:28,480 >> E perché vogliamo oggetto programmazione orientata? 171 00:10:28,480 --> 00:10:33,530 Così si può immaginare che quando si programma diventa piuttosto complicato. 172 00:10:33,530 --> 00:10:36,400 Diciamo solo che quando sei attuazione scacchiera, 173 00:10:36,400 --> 00:10:40,020 la logica sta per essere davvero complicato. 174 00:10:40,020 --> 00:10:43,280 Hai 36 diversi pezzi, in modo che se si 175 00:10:43,280 --> 00:10:48,370 voglio scrivere logica per tutti 36 diversi pezzi di scacchi, 176 00:10:48,370 --> 00:10:52,150 che sta per essere un sacco di funzioni e variabili diverse. 177 00:10:52,150 --> 00:10:54,070 E 'un sacco di guai. 178 00:10:54,070 --> 00:10:58,980 E probabilmente si sta andando a scrivere un metodo diverso o funzione diversa 179 00:10:58,980 --> 00:11:03,950 per ciascuno del pezzo controllare esattamente quello che fanno. 180 00:11:03,950 --> 00:11:08,830 >> Ma se si fa object oriented programmazione, tutti questi pezzi 181 00:11:08,830 --> 00:11:12,440 può essere sottratto in un singolo oggetto. 182 00:11:12,440 --> 00:11:16,111 E l'oggetto avrà qualche comune proprietà, come che tipo di pezzo 183 00:11:16,111 --> 00:11:16,610 è vero? 184 00:11:16,610 --> 00:11:17,740 Di che colore è? 185 00:11:17,740 --> 00:11:19,480 Come si può muovere? 186 00:11:19,480 --> 00:11:24,660 E in questo modo si ha notevolmente semplificata la logica di esso. 187 00:11:24,660 --> 00:11:28,480 Quindi è solo un ottimo modo per rendere i programmi complessi, 188 00:11:28,480 --> 00:11:33,700 e relazione gerarchica all'interno del programma, molto semplice. 189 00:11:33,700 --> 00:11:36,800 Come stiamo andando a vedere perché molto rapidamente quando 190 00:11:36,800 --> 00:11:39,660 in realtà stiamo facendo programming-- quando siamo in realtà 191 00:11:39,660 --> 00:11:42,830 facendo un codice S la programmazione successiva sessione. 192 00:11:42,830 --> 00:11:48,120 >> Ebbene in aggiunta a ciò, programmazione orientata agli oggetti 193 00:11:48,120 --> 00:11:50,030 è solo un sacco di divertimento. 194 00:11:50,030 --> 00:11:51,990 Hai a progettare il proprio oggetto. 195 00:11:51,990 --> 00:11:56,080 Devi progettare quello che fa sembrare da soli. 196 00:11:56,080 --> 00:11:58,250 Non esiste una risposta giusta ad esso. 197 00:11:58,250 --> 00:12:02,940 Ed è assolutamente interessante. 198 00:12:02,940 --> 00:12:07,270 Quindi, in programmazione orientata agli oggetti, due concetti fondamentali 199 00:12:07,270 --> 00:12:10,130 sarà di classe e istanza. 200 00:12:10,130 --> 00:12:13,570 Una classe è sostanzialmente un modello per l'oggetto. 201 00:12:13,570 --> 00:12:18,070 E un caso è sostanzialmente un oggetto specifico. 202 00:12:18,070 --> 00:12:21,090 >> Diciamo solo che si sta facendo un cookie. 203 00:12:21,090 --> 00:12:24,800 In questo caso, ogni singolo biscotto in realtà finisce con 204 00:12:24,800 --> 00:12:27,310 sta per essere un oggetto. 205 00:12:27,310 --> 00:12:35,830 Ma il piatto biscotto si usa per cuocere tutti i biscotti sarà una classe. 206 00:12:35,830 --> 00:12:37,880 Una classe è fondamentalmente un modello. 207 00:12:37,880 --> 00:12:46,170 E l'istanza sarà uno specifico oggetto creato in tale ramo. 208 00:12:46,170 --> 00:12:49,970 >> E verrà creata un'istanza sulla base di dichiarazione di classe, 209 00:12:49,970 --> 00:12:56,760 come vedremo nelle diapositive successive. 210 00:12:56,760 --> 00:13:00,010 Quindi cerchiamo di fare in realtà davvero esempio veloce [incomprensibile]. 211 00:13:00,010 --> 00:13:04,280 Diciamo che stiamo dichiarando un oggetto per un gatto. 212 00:13:04,280 --> 00:13:07,930 L'oggetto dovrebbe have-- la classe gatto dovrebbe 213 00:13:07,930 --> 00:13:11,260 hanno alcune proprietà e metodi. 214 00:13:11,260 --> 00:13:17,300 Che tipo di proprietà qualora le Classe have-- dovrebbe avere il gatto? 215 00:13:17,300 --> 00:13:20,580 >> Ad esempio, il colore, età e razza, quelli 216 00:13:20,580 --> 00:13:24,440 sarà variabili che sono specifici per ogni gatto. 217 00:13:24,440 --> 00:13:27,790 E queste sono alcune cose che usiamo per descrivere un gatto. 218 00:13:27,790 --> 00:13:31,880 Che tipo di metodo, o che cosa può fare un gatto? 219 00:13:31,880 --> 00:13:37,160 Alcuni esempi veloci sarebbe chase topo, mangiare pesce o semplicemente miagolare. 220 00:13:37,160 --> 00:13:40,900 Questo è davvero un veloce esempio di classe di cat. 221 00:13:40,900 --> 00:13:46,920 E davvero una specifica oggetto gatto sarà un gatto 222 00:13:46,920 --> 00:13:50,930 dove specifichiamo il colore, l'età e la razza. 223 00:13:50,930 --> 00:13:53,790 >> In tal caso, il nostro oggetto è non più di una classe più. 224 00:13:53,790 --> 00:14:00,010 Noi copiamo il modello dalla classe e Si precisa ogni informazione specifica 225 00:14:00,010 --> 00:14:04,510 a tale oggetto specifico per renderlo indipendente. 226 00:14:04,510 --> 00:14:09,350 E quando si sta chiamando un metodo all'interno di un oggetto, 227 00:14:09,350 --> 00:14:16,640 basta chiamare miagolio sull'oggetto, che è il gatto che avete appena creato. 228 00:14:16,640 --> 00:14:19,020 >> Probabilmente si stampare qualcosa come "Ciao Mondo! 229 00:14:19,020 --> 00:14:20,000 Miao. " 230 00:14:20,000 --> 00:14:22,110 Piuttosto carino. 231 00:14:22,110 --> 00:14:24,500 Va bene, facciamo solo entrare in alcuni dettagli 232 00:14:24,500 --> 00:14:30,650 e vedere che cosa fa esattamente questo tradurre in essere programmazione iOS. 233 00:14:30,650 --> 00:14:36,500 Così in iOS di programmazione ogni singolo Classe sarà attuata in due file. 234 00:14:36,500 --> 00:14:41,420 Un file è qui, che è chiamato l'interfaccia. 235 00:14:41,420 --> 00:14:45,300 Un altro file è qui, che è chiamato attuazione. 236 00:14:45,300 --> 00:14:48,890 >> Tipicamente l'interfaccia avrà extension.h 237 00:14:48,890 --> 00:14:51,740 come abbiamo visto in librerie C. 238 00:14:51,740 --> 00:14:56,340 E file di implementazione è andando ad avere extension.n. 239 00:14:56,340 --> 00:14:57,260 E 'un po' strano. 240 00:14:57,260 --> 00:15:01,270 Ma .n realtà significa .c, non c'è fondamentale differenza tra chi 241 00:15:01,270 --> 00:15:02,100 due. 242 00:15:02,100 --> 00:15:06,650 Quindi, in questo caso, possiamo vedere che siamo dichiarando interfaccia, Cat: oggetti. 243 00:15:06,650 --> 00:15:10,660 244 00:15:10,660 --> 00:15:13,760 Che si chiama eredità. 245 00:15:13,760 --> 00:15:19,170 Stiamo fondamentalmente ereditando il Classe gatto dalla classe di oggetti. 246 00:15:19,170 --> 00:15:24,790 Così ogni proprietà e metodo che era precedentemente definito nella classe dell'oggetto 247 00:15:24,790 --> 00:15:28,560 saranno definiti automaticamente in una classe gatto pure. 248 00:15:28,560 --> 00:15:35,900 >> In aggiunta a ciò, si definisce il colore, razza, ed età, tre variabili. 249 00:15:35,900 --> 00:15:39,360 Che sembra in realtà come qualcosa che hai fatto prima. 250 00:15:39,360 --> 00:15:41,770 Sembra struct. 251 00:15:41,770 --> 00:15:44,950 Questo è fondamentalmente la sintassi per la dichiarazione struct, 252 00:15:44,950 --> 00:15:47,710 e che è totalmente corretto. 253 00:15:47,710 --> 00:15:51,825 E dal momento che ho detto prima, la differenza una struct 254 00:15:51,825 --> 00:15:53,960 e un oggetto, una delle differenze fondamentali 255 00:15:53,960 --> 00:15:59,080 è che un oggetto ha metodo, mentre una struct ha solo variabili. 256 00:15:59,080 --> 00:16:03,450 Quindi, oltre alle proprietà o variabili che abbiamo creato per l'oggetto, 257 00:16:03,450 --> 00:16:05,700 specifichiamo un metodo. 258 00:16:05,700 --> 00:16:09,720 >> Diciamo qui abbiamo due metodi, uno è meow, 259 00:16:09,720 --> 00:16:12,460 un altro è il mouse caccia. 260 00:16:12,460 --> 00:16:18,600 Probabilmente vogliamo essere il superamento di un parametro basato sulla nostra precedente metodo 261 00:16:18,600 --> 00:16:20,440 modello di dichiarazione. 262 00:16:20,440 --> 00:16:22,160 Probabilmente vuole essere il superamento di un mouse. 263 00:16:22,160 --> 00:16:25,180 E probabilmente si vorrà per restituire un significante bool 264 00:16:25,180 --> 00:16:30,010 se il vostro gatto ha successo catturato il mouse o meno. 265 00:16:30,010 --> 00:16:33,170 >> Questa è l'interfaccia, ma possiamo vedere che l'interfaccia in realtà 266 00:16:33,170 --> 00:16:35,150 non fare nulla. 267 00:16:35,150 --> 00:16:40,800 Semplicemente dice di un programma che cosa exists-- ciò che esiste nella classe cat. 268 00:16:40,800 --> 00:16:43,640 Quindi, al fine per il programma di fare qualcosa, 269 00:16:43,640 --> 00:16:46,680 abbiamo bisogno di avere file di implementazione. 270 00:16:46,680 --> 00:16:51,940 Ecco, la prima cosa che facciamo è ovviamente importiamo l'interfaccia. 271 00:16:51,940 --> 00:16:56,470 Dopo importiamo l'interfaccia, definiamo il metodo. 272 00:16:56,470 --> 00:17:00,150 >> Diciamo solo che qui meow sarebbe solo stampare 273 00:17:00,150 --> 00:17:01,740 "Ciao Mondo!" alla console. 274 00:17:01,740 --> 00:17:04,319 275 00:17:04,319 --> 00:17:08,460 E dopo l'attuazione di file, stiamo praticamente fatto. 276 00:17:08,460 --> 00:17:14,530 Questo è fondamentalmente una classe Dichiarazione per una classe. 277 00:17:14,530 --> 00:17:19,970 Così ora la domanda diventa, come si fa a dichiarare una variabile? 278 00:17:19,970 --> 00:17:26,880 Il modo in cui si utilizza una classe per creare una oggetti in Objective C è scritto qui. 279 00:17:26,880 --> 00:17:30,730 >> Per prima cosa specifica che questo è un puntatore gatto, 280 00:17:30,730 --> 00:17:38,700 perché ogni oggetto in Objective C è infine implementato come un puntatore. 281 00:17:38,700 --> 00:17:46,210 E si chiama la classe, li chiamano come alloc, che è fondamentalmente malloc, 282 00:17:46,210 --> 00:17:51,220 raccontando il sistema operativo bisogno di spazio di memoria per questo oggetto. 283 00:17:51,220 --> 00:17:55,780 Dopo che avete un oggetto già e basta inizializzato. 284 00:17:55,780 --> 00:17:56,780 Questo è solo convention. 285 00:17:56,780 --> 00:17:59,390 286 00:17:59,390 --> 00:18:04,410 So che è è un po 'strano, ma questo è in realtà come Apple fa roba. 287 00:18:04,410 --> 00:18:07,130 >> Assegnazione proprietà è in realtà abbastanza semplice. 288 00:18:07,130 --> 00:18:09,250 E 'molto simile a quello che stai facendo, quando 289 00:18:09,250 --> 00:18:13,780 si sta assegnando alcuni specifici campo all'interno di struct. 290 00:18:13,780 --> 00:18:16,830 Devi solo la variabile nome, il nome della proprietà, 291 00:18:16,830 --> 00:18:20,140 e assegnare un valore specifico ad esso. 292 00:18:20,140 --> 00:18:24,120 E chiamare un metodo è molto simile. 293 00:18:24,120 --> 00:18:29,080 L'chiamare un metodo è fondamentalmente quello che parlo 294 00:18:29,080 --> 00:18:32,390 per chiamare qualsiasi metodo in Objective C. 295 00:18:32,390 --> 00:18:36,660 >> Stai passando un oggetto, in questo caso sarà miacategoria, 296 00:18:36,660 --> 00:18:42,490 e si sta passando il nome del metodo. 297 00:18:42,490 --> 00:18:47,130 Come se stai parlando con l'oggetto, miacategoria, che si dovrebbe miagolare. 298 00:18:47,130 --> 00:18:48,570 E 'piuttosto interessante. 299 00:18:48,570 --> 00:18:52,010 300 00:18:52,010 --> 00:18:55,680 Dopo di che, c'è un modello più essenziale di progettazione 301 00:18:55,680 --> 00:18:59,940 che abbiamo bisogno di parlare prima di arrivare al codice vero S. 302 00:18:59,940 --> 00:19:03,300 Questo modello di progettazione si chiama evento guidato la programmazione. 303 00:19:03,300 --> 00:19:09,660 Questo è probabilmente anche uno dei più idee fondamentali nella programmazione iOS. 304 00:19:09,660 --> 00:19:14,410 >> Quindi probabilmente non sa cosa esattamente è la programmazione event driven, 305 00:19:14,410 --> 00:19:16,990 ma non è poi così spaventoso. 306 00:19:16,990 --> 00:19:20,400 Beh, in realtà, si ha già fatto prima. 307 00:19:20,400 --> 00:19:24,894 Questa è una delle linee probabilmente avete già scritto negli ultimi [incomprensibile] 308 00:19:24,894 --> 00:19:26,810 di CS50, google.maps.event.addListener (marker, 309 00:19:26,810 --> 00:19:27,810 "Click", function () {}) :. 310 00:19:27,810 --> 00:19:32,410 311 00:19:32,410 --> 00:19:37,620 Chiamando questa linea si è in sostanza dire al computer 312 00:19:37,620 --> 00:19:42,650 che quando l'evento chiamato "Click" avviene sul marcatore, 313 00:19:42,650 --> 00:19:43,630 utilizzare tale funzione. 314 00:19:43,630 --> 00:19:46,910 315 00:19:46,910 --> 00:19:50,950 >> Questo è molto diverso da ciò che si fa in mario.c. 316 00:19:50,950 --> 00:19:56,670 In mario.c basta eseguire il programma una volta, ti dà un output, 317 00:19:56,670 --> 00:19:58,590 e il gioco è fatto. 318 00:19:58,590 --> 00:20:02,590 Si tratta di una specie di uno dei programmi tiro. 319 00:20:02,590 --> 00:20:05,830 Programmi event driven sono molto, molto diverso. 320 00:20:05,830 --> 00:20:10,230 Immaginiamo, se Facebook è uno programma tiro non è davvero buono. 321 00:20:10,230 --> 00:20:13,750 Basta andare su Facebook una volta ed è fatta. 322 00:20:13,750 --> 00:20:16,700 Ti dà un output e non avete mai avuto indietro. 323 00:20:16,700 --> 00:20:19,380 Non hai mai avuto nulla di più. 324 00:20:19,380 --> 00:20:23,880 >> Così qui, in particolare il modello che usiamo è 325 00:20:23,880 --> 00:20:26,940 evento guidato, in modo che ogni funzione sarà 326 00:20:26,940 --> 00:20:31,480 essere catturati sulla base di ciò evento è accaduto. 327 00:20:31,480 --> 00:20:34,670 Per esempio, se abbiamo un pulsante e specifichiamo 328 00:20:34,670 --> 00:20:39,870 che ogni volta che si fa clic su tale pulsante, chiamare la funzione chiamata "Ciao Mondo!" 329 00:20:39,870 --> 00:20:47,810 In questo modo possiamo davvero gestire la logica di funzionamento 330 00:20:47,810 --> 00:20:50,560 scorrere in un modo altamente flessibile. 331 00:20:50,560 --> 00:20:55,840 L'utente può fare o chiamare una funzione che è già stato chiamato. 332 00:20:55,840 --> 00:20:59,900 E 'completamente basata su ciò che gli utenti fanno. 333 00:20:59,900 --> 00:21:04,080 >> Così possiamo vedere che questo è in realtà molto meglio di mario.c. 334 00:21:04,080 --> 00:21:07,190 E buona notizia è che è in realtà non è un concetto nuovo. 335 00:21:07,190 --> 00:21:12,140 Voi ragazzi avete già fatto che in ultimo problema impostato. 336 00:21:12,140 --> 00:21:16,640 Così in Objective C ci sono tre diversi diagrammi 337 00:21:16,640 --> 00:21:19,030 per la programmazione event driven. 338 00:21:19,030 --> 00:21:21,970 Il primo diagramma è chiamato azione bersaglio, 339 00:21:21,970 --> 00:21:26,990 dove si associa un tasto stampa con qualche funzione. 340 00:21:26,990 --> 00:21:31,590 Diciamo solo che, ogni volta che si fa clic qualche tasto, si chiama qualche funzione. 341 00:21:31,590 --> 00:21:33,620 Questo è molto semplice azione di destinazione. 342 00:21:33,620 --> 00:21:35,580 >> Il secondo è in realtà la più difficile, 343 00:21:35,580 --> 00:21:38,450 si chiama delega sul protocollo. 344 00:21:38,450 --> 00:21:41,800 Stiamo andando a spiegare che in grande dettaglio più avanti. 345 00:21:41,800 --> 00:21:44,420 E la terza via è la notifica. 346 00:21:44,420 --> 00:21:46,770 Questo non è effettivamente molto importante dal punto 347 00:21:46,770 --> 00:21:50,920 come ci riguarda, perché la possibilità che hai intenzione di utilizzare la notifica 348 00:21:50,920 --> 00:21:53,310 nel progetto finale è piuttosto basso. 349 00:21:53,310 --> 00:21:56,440 Quindi stiamo andando a saltare quella parte. 350 00:21:56,440 --> 00:21:59,460 >> E stiamo andando a fare immersioni in delegazione il protocollo. 351 00:21:59,460 --> 00:22:02,380 352 00:22:02,380 --> 00:22:04,470 Così che cosa è esattamente un protocollo? 353 00:22:04,470 --> 00:22:06,450 O che cosa è esattamente una delegazione? 354 00:22:06,450 --> 00:22:09,670 Parliamo di protocollo per iniziare. 355 00:22:09,670 --> 00:22:13,360 I protocolli non sono altro che manifestazioni. 356 00:22:13,360 --> 00:22:19,230 Ma questi eventi sono date da Apple per iniziare. 357 00:22:19,230 --> 00:22:22,640 Ad esempio, non sono completamente sicuro di come molti di voi 358 00:22:22,640 --> 00:22:27,930 ragazzi usano originale di Apple elettronica app o contatto, 359 00:22:27,930 --> 00:22:32,180 ma ogni volta che si scorre il tavolo e premere il cellulare specifico 360 00:22:32,180 --> 00:22:36,130 sul tavolo, che è un evento. 361 00:22:36,130 --> 00:22:38,330 >> E se si vuole fare quell'evento da soli, 362 00:22:38,330 --> 00:22:40,410 in realtà è un po 'difficile. 363 00:22:40,410 --> 00:22:44,880 Così Apple ha dato che anche per voi in modo che si può semplicemente utilizzare direttamente 364 00:22:44,880 --> 00:22:49,610 l'evento per fare qualcosa da soli. 365 00:22:49,610 --> 00:22:52,980 I protocolli sono in realtà molto, molto diffuso 366 00:22:52,980 --> 00:22:58,320 in Objective C. Bene in Infatti, ogni singola app 367 00:22:58,320 --> 00:23:00,870 ha qualcosa catturato delegato app. 368 00:23:00,870 --> 00:23:06,330 All'interno di delicata è tutta la protocolli per caricare l'applicazione. 369 00:23:06,330 --> 00:23:12,470 >> Diciamo c'è un evento per app ha fatto carico. 370 00:23:12,470 --> 00:23:18,200 Così che cosa dovrebbe accadere dopo che hai ha creato un app, dopo aver aperto l'applicazione, 371 00:23:18,200 --> 00:23:22,630 dopo aver chiuso l'applicazione, o dopo si mette l'iPhone a dormire. 372 00:23:22,630 --> 00:23:27,480 Questi sono tutti eventi che ha già stato dato. 373 00:23:27,480 --> 00:23:34,730 E originariamente all'interno di queste particelle ci sarà alcuna implementazione. 374 00:23:34,730 --> 00:23:39,750 Apple ha appena detto che questa funzione succederà quando qualche evento si verifica, 375 00:23:39,750 --> 00:23:44,380 ma quello che fai con quel funzione è completamente a voi. 376 00:23:44,380 --> 00:23:49,290 >> La delega è sostanzialmente raccontare la classe 377 00:23:49,290 --> 00:23:53,060 che si dovrebbe gestire questi protocolli. 378 00:23:53,060 --> 00:23:55,340 E 'un po' confuso, ma sarà 379 00:23:55,340 --> 00:23:59,380 molto più chiaro quando facciamo i codici s in azione. 380 00:23:59,380 --> 00:24:04,760 Delega su protocollo è in realtà un molto robusto meccanismo nel senso 381 00:24:04,760 --> 00:24:08,160 che se lo facciamo delegazione a una classe specifica, 382 00:24:08,160 --> 00:24:12,400 siamo in grado di gestire essenzialmente tutti i tipi di eventi 383 00:24:12,400 --> 00:24:17,040 utilizzando qualsiasi classe che abbiamo, strumento molto comodo. 384 00:24:17,040 --> 00:24:21,530 >> Così un rapido esempio per delega sul protocollo 385 00:24:21,530 --> 00:24:24,120 sarà quello che ho appena parlato. 386 00:24:24,120 --> 00:24:26,720 387 00:24:26,720 --> 00:24:30,890 Questo protocollo specificamente è chiamato Tableview [incomprensibile] selezionare ruolo 388 00:24:30,890 --> 00:24:35,480 a [? index?] [? passato. ?] Quindi questo un evento che essere catturati quando si 389 00:24:35,480 --> 00:24:39,710 in realtà toccare uno specifico cellula del vostro Tableview, 390 00:24:39,710 --> 00:24:43,570 diciamo solo che nella vostra posta o nel vostro contatti app. 391 00:24:43,570 --> 00:24:48,180 >> All'interno di una funzione non c'era originariamente non fare nulla. 392 00:24:48,180 --> 00:24:51,950 La funzione non è così fare nulla per impostazione predefinita. 393 00:24:51,950 --> 00:24:55,540 Ma è possibile specificare ciò che la funzione fa, 394 00:24:55,540 --> 00:24:59,610 dato quello che volete dalla vostra applicazione. 395 00:24:59,610 --> 00:25:01,610 Strumento molto comodo. 396 00:25:01,610 --> 00:25:06,840 E con tutto ciò che Detto questo, ho praticamente 397 00:25:06,840 --> 00:25:11,430 coprire una sintassi molto semplice e concetto fondamentale per l'obiettivo C 398 00:25:11,430 --> 00:25:15,860 programmazione, e siamo in grado di fare un po 'di codice s. 399 00:25:15,860 --> 00:25:17,980 Molto più emozionante. 400 00:25:17,980 --> 00:25:21,070 Così codice s è in realtà un po 'opprimente 401 00:25:21,070 --> 00:25:23,330 quando si apre per la prima volta. 402 00:25:23,330 --> 00:25:26,640 >> Una breve nota, quindi se si voglia di fare lo sviluppo iOS, 403 00:25:26,640 --> 00:25:29,630 Mi raccomando di avere un Mac. 404 00:25:29,630 --> 00:25:33,930 Perché fare sviluppo iOS su Windows è molto, molto difficile. 405 00:25:33,930 --> 00:25:37,560 E 'fattibile, ma è davvero difficile. 406 00:25:37,560 --> 00:25:40,610 E sicuramente fare Non voglio usare g modifica. 407 00:25:40,610 --> 00:25:47,950 Quindi, nel codice di s abbiamo diverse aree diverse. 408 00:25:47,950 --> 00:25:53,050 La prima volta che aprite s codice vedrete una zona di navigazione, 409 00:25:53,050 --> 00:25:57,470 che fondamentalmente mostra tutte le i file che è nel progetto attuale. 410 00:25:57,470 --> 00:26:03,590 >> Avete una barra degli strumenti, che è fondamentalmente la gestione vista, 411 00:26:03,590 --> 00:26:08,570 o qualche piccolo veloce Strumenti circa codice s stesso. 412 00:26:08,570 --> 00:26:11,140 E questa è l'area effettiva dell'editor. 413 00:26:11,140 --> 00:26:15,900 Questa zona è molto simile g di modifica, ma molto meglio di g di modifica. 414 00:26:15,900 --> 00:26:21,150 E in questa zona destra, è chiamato la zona di servizio. 415 00:26:21,150 --> 00:26:27,170 La zona diventa veramente utile quando si sta creando l'interfaccia o specificando 416 00:26:27,170 --> 00:26:30,070 alcune impostazioni rapide per la vostra applicazione. 417 00:26:30,070 --> 00:26:34,570 >> E la zona finale è il debugging. 418 00:26:34,570 --> 00:26:37,970 Quest'area contiene la console. 419 00:26:37,970 --> 00:26:43,170 Così ogni volta che dite printf, o NSLog nel nostro caso, 420 00:26:43,170 --> 00:26:47,330 tutti i risultati sono andare da stampare qui. 421 00:26:47,330 --> 00:26:48,260 Bene? 422 00:26:48,260 --> 00:26:52,090 Credo che possiamo davvero fare in fretta un esempio per la programmazione iOS. 423 00:26:52,090 --> 00:26:54,220 E diciamo effettivamente aprire il codice su s. 424 00:26:54,220 --> 00:26:57,210 425 00:26:57,210 --> 00:27:01,346 Così ogni volta che si apre il codice in alto s, è intenzione di mostrare qualcosa di simile. 426 00:27:01,346 --> 00:27:03,220 E 'intenzione di chiedere cosa vuoi fare? 427 00:27:03,220 --> 00:27:06,830 Vuoi iniziare a qualcosa casuale, un parco giochi, in pratica si 428 00:27:06,830 --> 00:27:11,250 può solo testare il codice senza realmente impegnarsi in qualsiasi applicazione. 429 00:27:11,250 --> 00:27:13,020 >> Vuoi creare un nuovo progetto? 430 00:27:13,020 --> 00:27:16,660 O vuoi continuare lavoro esistente? 431 00:27:16,660 --> 00:27:20,270 Nel nostro caso stiamo andando per creare un nuovo progetto. 432 00:27:20,270 --> 00:27:22,980 Quindi è davvero bello, s codice è in realtà già 433 00:27:22,980 --> 00:27:26,820 dato alcuni modelli per la creazione di oggetti. 434 00:27:26,820 --> 00:27:32,680 Se si vuole fare un gioco, s codice in realtà ha un modello di gioco per voi, 435 00:27:32,680 --> 00:27:36,890 ha applicazioni basate pagina, applicazione basata tab. 436 00:27:36,890 --> 00:27:39,280 In questo caso, stiamo andando di fare qualcosa di molto semplice, 437 00:27:39,280 --> 00:27:43,230 e abbiamo intenzione di utilizzare un singola applicazione vista. 438 00:27:43,230 --> 00:27:48,270 >> Dopo di che solo ciò che si desidera chiamare il prodotto, e come ti chiami, 439 00:27:48,270 --> 00:27:52,760 qual è il tuo identificativo, e Che lingua si usa. 440 00:27:52,760 --> 00:27:57,060 Qui non vogliamo Controllare con Core Data. 441 00:27:57,060 --> 00:28:00,170 Core Data è fondamentalmente un databasing iOS. 442 00:28:00,170 --> 00:28:05,360 Se lo fai Core Data, s codice sta per definire 443 00:28:05,360 --> 00:28:07,710 un sacco classi più complicato per voi. 444 00:28:07,710 --> 00:28:12,740 Quindi, per tenere tutto semplice, siamo solo andando a fare a meno di Core Data 445 00:28:12,740 --> 00:28:15,290 proprio adesso. 446 00:28:15,290 --> 00:28:18,030 >> Il problema che stiamo andando a essere utilizzando è che-- il problema 447 00:28:18,030 --> 00:28:23,770 stiamo andando ad essere la creazione è che abbiamo fondamentalmente desidera importare da Mario C 448 00:28:23,770 --> 00:28:25,437 ad un app iOS. 449 00:28:25,437 --> 00:28:26,645 Quindi diciamo che Mario-iOS. 450 00:28:26,645 --> 00:28:31,230 451 00:28:31,230 --> 00:28:34,880 Naturalmente si specifica che cosa vuole mettere nel progetto. 452 00:28:34,880 --> 00:28:37,870 E ci andiamo. 453 00:28:37,870 --> 00:28:41,390 >> Quindi questo è un po ' schiacciante, ma questo è in realtà 454 00:28:41,390 --> 00:28:43,540 quello che abbiamo appena visto nelle diapositive. 455 00:28:43,540 --> 00:28:49,710 E la prima area si vede in questo momento è fondamentalmente configurazione del progetto. 456 00:28:49,710 --> 00:28:53,390 Quindi tutto quello che volete fare progetto, che tipo di dispositivo, 457 00:28:53,390 --> 00:28:58,810 diciamo solo che tipo di dispositivo vuoi la vostra applicazione per apparire? 458 00:28:58,810 --> 00:29:01,280 È iPhone, iPad o universale? 459 00:29:01,280 --> 00:29:04,660 Quindi l'orientamento del dispositivo, tutta questa roba. 460 00:29:04,660 --> 00:29:08,490 Non molto importante, ma potrebbe essere, ma questo 461 00:29:08,490 --> 00:29:11,050 è un luogo in cui si imposta il vostro progetto se effettivamente 462 00:29:11,050 --> 00:29:15,180 desidera distribuire al negozio di Apple. 463 00:29:15,180 --> 00:29:20,420 >> Va bene, diamo un'occhiata a qualcosa che è dentro il nostro codice. 464 00:29:20,420 --> 00:29:22,360 Andiamo attraverso il file navigatore. 465 00:29:22,360 --> 00:29:30,140 E questi sono tutti i file che già è venuto con il modello, molto bello. 466 00:29:30,140 --> 00:29:35,980 Così, quando si fa clic su uno di loro questo è quello che sembra. 467 00:29:35,980 --> 00:29:38,530 Molto simile a g modifica. 468 00:29:38,530 --> 00:29:41,340 Ma si può vedere che la evidenziazione della sintassi è probabilmente 469 00:29:41,340 --> 00:29:42,780 un po 'più bello. 470 00:29:42,780 --> 00:29:45,610 Ed è in realtà molto di più potente di g editing. 471 00:29:45,610 --> 00:29:49,970 E si può completamento automatico un sacco di cose per voi, 472 00:29:49,970 --> 00:29:52,370 come vedremo molto rapidamente. 473 00:29:52,370 --> 00:29:54,100 >> Apriamo la zona di debug pure. 474 00:29:54,100 --> 00:30:02,790 475 00:30:02,790 --> 00:30:07,000 Va bene, come possiamo vedere, la console è proprio qui. 476 00:30:07,000 --> 00:30:13,840 Questo è quello che si sta andando a vedere dove sei in printf nsloging o qualcosa. 477 00:30:13,840 --> 00:30:17,155 Quindi, senza ulteriori indugi, andiamo in realtà compilare il app e vedere cosa succede. 478 00:30:17,155 --> 00:30:20,000 479 00:30:20,000 --> 00:30:23,410 Una caratteristica essenziale per codice s, è che il codice s 480 00:30:23,410 --> 00:30:25,850 è dotato di un simulatore di iPhone. 481 00:30:25,850 --> 00:30:29,820 Quindi non c'è bisogno di avere un iPhone per provare il vostro progetto, 482 00:30:29,820 --> 00:30:34,440 codice s in grado di simulare che per voi, come si può vedere in questo momento. 483 00:30:34,440 --> 00:30:36,406 >> E 'molto bello. 484 00:30:36,406 --> 00:30:38,640 Sta prendendo un po ' po 'di tempo per la compilazione 485 00:30:38,640 --> 00:30:43,040 e fondamentalmente abbiamo un'applicazione vuota, 486 00:30:43,040 --> 00:30:44,640 che in realtà non fa nulla. 487 00:30:44,640 --> 00:30:46,175 Ma si compila. 488 00:30:46,175 --> 00:30:47,380 E 'abbastanza impressionante. 489 00:30:47,380 --> 00:30:50,200 E 'molto meglio di C, eh? 490 00:30:50,200 --> 00:30:52,130 Va bene, allora facciamo provare ad aggiungere qualcosa. 491 00:30:52,130 --> 00:30:56,050 492 00:30:56,050 --> 00:31:02,650 Un file che è un po ' strano qui si chiama storyboard. 493 00:31:02,650 --> 00:31:08,020 Questo è in realtà un grande, caratteristica impressionante per il codice s. 494 00:31:08,020 --> 00:31:14,170 Perché in codice s, si può effettivamente trascinamento e rilasciare elementi sull'interfaccia 495 00:31:14,170 --> 00:31:17,430 e mostrerà direttamente up. 496 00:31:17,430 --> 00:31:18,055 Proviamo questo. 497 00:31:18,055 --> 00:31:21,230 498 00:31:21,230 --> 00:31:27,236 >> Lasciamo cadere una etichetta qui, "Ciao Mondo !!!" 499 00:31:27,236 --> 00:31:29,740 Possiamo centrare tale. 500 00:31:29,740 --> 00:31:30,970 Pretty cool. 501 00:31:30,970 --> 00:31:33,915 Ora corriamo questa simulazione di arresto. 502 00:31:33,915 --> 00:31:36,940 503 00:31:36,940 --> 00:31:38,700 Qui abbiamo "Ciao Mondo !!!" 504 00:31:38,700 --> 00:31:40,810 Non abbiamo neanche fare ancora alcuna codifica. 505 00:31:40,810 --> 00:31:42,750 Che diavolo sta succedendo? 506 00:31:42,750 --> 00:31:45,880 Questo è il modo potente Interface Builder può essere. 507 00:31:45,880 --> 00:31:48,030 Qualcuno addirittura ha detto che si può probabilmente solo 508 00:31:48,030 --> 00:31:52,800 completare un app senza scrivere probabilmente mille righe di codice 509 00:31:52,800 --> 00:31:54,820 semplicemente utilizzando l'Interface Builder. 510 00:31:54,820 --> 00:31:59,680 Ma probabilmente non è il modo migliore per farlo. 511 00:31:59,680 --> 00:32:01,670 >> Ora diamo effettivamente ottenere fino a codifica. 512 00:32:01,670 --> 00:32:04,860 513 00:32:04,860 --> 00:32:08,330 Quindi la struttura del file in realtà è davvero interessante 514 00:32:08,330 --> 00:32:15,610 perché, come si può vedere, ci è funzione principale ovunque. 515 00:32:15,610 --> 00:32:17,466 Vedi? 516 00:32:17,466 --> 00:32:19,340 Come abbiamo accennato prima, si può vedere che questo 517 00:32:19,340 --> 00:32:22,830 è un file di implementazione per una classe specifica. 518 00:32:22,830 --> 00:32:25,690 Ma non c'è nessuna parte principale. 519 00:32:25,690 --> 00:32:27,490 Allora, dove è il principale? 520 00:32:27,490 --> 00:32:31,970 In realtà, vi è un principale, ma la principale è nascosto da voi. 521 00:32:31,970 --> 00:32:34,560 Il principale è qui. 522 00:32:34,560 --> 00:32:37,120 Che sembra familiare. 523 00:32:37,120 --> 00:32:41,000 >> Quindi, in pratica quello che iOS sta facendo all'interno principale 524 00:32:41,000 --> 00:32:43,540 è che ogni volta principale è chiamato, che è fondamentalmente 525 00:32:43,540 --> 00:32:49,000 ogni volta che l'applicazione viene eseguita, essa crea un oggetto chiamato AppDelegate. 526 00:32:49,000 --> 00:32:52,980 527 00:32:52,980 --> 00:32:57,350 Come ho detto prima, l'intero app è in realtà un oggetto di per sé. 528 00:32:57,350 --> 00:33:02,270 Quindi, in questo modo, sostanzialmente iOS app sta dicendo il compilatore 529 00:33:02,270 --> 00:33:05,540 che OK, ho intenzione di creare un prodotto chiamato AppDelegate, 530 00:33:05,540 --> 00:33:07,620 e che sta per essere la mia app. 531 00:33:07,620 --> 00:33:09,640 Quindi è necessario andare attraverso quel AppDelegate 532 00:33:09,640 --> 00:33:12,040 e vedere che quel ragazzo sta facendo. 533 00:33:12,040 --> 00:33:14,850 Il mio lavoro è fatto per me. 534 00:33:14,850 --> 00:33:22,070 >> E in AppDelegate si può vedere che ci sono alcune funzioni davvero strano, 535 00:33:22,070 --> 00:33:25,290 Beh in realtà i metodi, che Apple ha già dato. 536 00:33:25,290 --> 00:33:27,464 Cosa sono questi? 537 00:33:27,464 --> 00:33:31,010 Questi sono in realtà solo protocolli che stavo parlando. 538 00:33:31,010 --> 00:33:35,670 Quindi questi sono eventi che Apple vi ha dato per iniziare. 539 00:33:35,670 --> 00:33:38,050 Non c'è nulla in qualche delle funzioni in questo momento, 540 00:33:38,050 --> 00:33:40,820 ma se vogliamo inizializzare qualcosa per la nostra app 541 00:33:40,820 --> 00:33:46,140 prima di entrare in visualizzazione qualsiasi vista, lo facciamo qui. 542 00:33:46,140 --> 00:33:51,150 >> Si può solo leggere il nome e credo l'evento è in realtà molto chiara. 543 00:33:51,150 --> 00:33:54,160 544 00:33:54,160 --> 00:33:58,350 Così ora principale ha creato un oggetto per AppDelegate. 545 00:33:58,350 --> 00:34:05,220 E che cosa AppDelegate sta per fare in realtà è anche nascosta da voi. 546 00:34:05,220 --> 00:34:09,250 Il AppDelegate sta per iniziare caricamento del magazzino ViewController. 547 00:34:09,250 --> 00:34:13,170 Quindi è fondamentalmente sta per iniziare caricando tutti i punti di vista che avete 548 00:34:13,170 --> 00:34:17,500 e solo rendono la vista in base alla gerarchia. 549 00:34:17,500 --> 00:34:21,280 >> Quindi, in questo caso abbiamo solo un punto di vista, che è qui. 550 00:34:21,280 --> 00:34:25,060 In modo che è l'unica vista che sta per essere chiamato. 551 00:34:25,060 --> 00:34:28,159 La logica ViewController è proprio qui. 552 00:34:28,159 --> 00:34:32,159 Questo è il codice che effettivamente controlla la vista che abbiamo appena visto. 553 00:34:32,159 --> 00:34:33,679 Va bene, facciamo qualcosa qui. 554 00:34:33,679 --> 00:34:44,030 555 00:34:44,030 --> 00:34:50,560 Così viewDidLoad suona come un evento, quando in realtà questo è anche un delegato, 556 00:34:50,560 --> 00:34:52,500 questo è anche un protocollo. 557 00:34:52,500 --> 00:34:56,350 >> Quindi, qualunque sia caricata la vista, tutto all'interno della funzione 558 00:34:56,350 --> 00:34:57,920 sarà chiamato. 559 00:34:57,920 --> 00:35:02,840 In questo caso dovremmo vedere "Ciao Tianyu! "Se si esegue il programma. 560 00:35:02,840 --> 00:35:09,820 561 00:35:09,820 --> 00:35:12,842 Si sta facendo un po 'lento compilare file storyboard. 562 00:35:12,842 --> 00:35:15,440 563 00:35:15,440 --> 00:35:18,190 Ebbene infatti, che vediamo un'uscita per esso. 564 00:35:18,190 --> 00:35:20,720 E 'piuttosto fresco. 565 00:35:20,720 --> 00:35:22,000 Ora facciamo realmente fare Mario. 566 00:35:22,000 --> 00:35:25,400 567 00:35:25,400 --> 00:35:27,625 Ho intenzione di definire il funzionamento molto rapidamente. 568 00:35:27,625 --> 00:35:31,510 569 00:35:31,510 --> 00:35:54,245 marioWithLevels: risultati (int) livello. 570 00:35:54,245 --> 00:36:01,120 571 00:36:01,120 --> 00:36:06,410 >> Va bene, questo è in realtà il terribile caratteristica di codice s completamento automatico. 572 00:36:06,410 --> 00:36:10,680 Così, quando si scrive e digita entrare, ha già dato il modello 573 00:36:10,680 --> 00:36:12,325 per voi, che è piuttosto fresco. 574 00:36:12,325 --> 00:36:50,480 575 00:36:50,480 --> 00:36:52,850 Questo dovrebbe guardare veramente familiare a voi ragazzi. 576 00:36:52,850 --> 00:36:55,940 577 00:36:55,940 --> 00:36:59,680 Siamo spiacenti, questo è colpa mia. 578 00:36:59,680 --> 00:37:15,790 579 00:37:15,790 --> 00:37:18,120 Va bene, fresco. 580 00:37:18,120 --> 00:37:22,710 Questa logica dovrebbe essere molto familiare a voi ragazzi, specialmente subito Mario. 581 00:37:22,710 --> 00:37:26,140 >> Ma noi ora stampare su un la console ogni volta, 582 00:37:26,140 --> 00:37:29,280 perché vogliamo mantenere in qualche modo traccia di ciò che stiamo stampando. 583 00:37:29,280 --> 00:37:31,810 Stiamo per usare il risultati in qualche modo più tardi, 584 00:37:31,810 --> 00:37:35,010 per visualizzare la stampa out comportare per l'utente. 585 00:37:35,010 --> 00:37:37,730 Così invece siamo solo nslogging tutto, 586 00:37:37,730 --> 00:37:42,410 che stiamo memorizzare tutto in un risultato chiamata di funzione, 587 00:37:42,410 --> 00:37:44,070 ma la logica è esattamente la stessa. 588 00:37:44,070 --> 00:37:48,030 589 00:37:48,030 --> 00:37:51,800 Dopo che abbiamo finito, abbiamo basta stampare i nostri risultati. 590 00:37:51,800 --> 00:37:59,330 591 00:37:59,330 --> 00:38:04,970 >> E qui invece di stampare il mio nome, stiamo andando a chiamare una funzione. 592 00:38:04,970 --> 00:38:15,340 593 00:38:15,340 --> 00:38:18,090 Vediamo cosa succede. 594 00:38:18,090 --> 00:38:21,240 Oops, ovviamente. 595 00:38:21,240 --> 00:38:24,320 Abbiamo un bel piccola piramide qui fuori. 596 00:38:24,320 --> 00:38:28,370 Questo è fondamentalmente C, siamo solo manipolando dove si chiama una funzione 597 00:38:28,370 --> 00:38:30,010 e come fa una funzione simile. 598 00:38:30,010 --> 00:38:31,560 Non c'è nulla di diverso. 599 00:38:31,560 --> 00:38:34,040 Ma questo è in realtà non molto eccitante qui, 600 00:38:34,040 --> 00:38:37,500 perché non stiamo vedendo nulla dalla app iPhone. 601 00:38:37,500 --> 00:38:42,120 >> Quindi, se effettivamente avete un iPhone app-- se effettivamente avete Mario iOS destra 602 00:38:42,120 --> 00:38:45,080 Ora, non si sta andando di vedere tutto ciò che 603 00:38:45,080 --> 00:38:49,450 ha a che fare con Mario, perché tutte quelle uscite in una console 604 00:38:49,450 --> 00:38:51,620 sono nascosti da un utente. 605 00:38:51,620 --> 00:38:53,850 Questo è ciò che si vede, che è "Ciao Mondo !!!" 606 00:38:53,850 --> 00:38:55,720 Non bene. 607 00:38:55,720 --> 00:39:03,090 Ora cerchiamo di rendere l'utente vedere che cosa esattamente stiamo stampando. 608 00:39:03,090 --> 00:39:06,000 Quindi non abbiamo bisogno di etichettare più. 609 00:39:06,000 --> 00:39:09,800 Proviamo e capire qualcosa altra cosa che potrebbe essere utile. 610 00:39:09,800 --> 00:39:12,140 >> Vi è in realtà uno elemento che si chiama 611 00:39:12,140 --> 00:39:16,460 campo di testo, che potrebbe essere molto utile per noi. 612 00:39:16,460 --> 00:39:19,880 Fondamentalmente visualizza una regione di testo che può essere modificato. 613 00:39:19,880 --> 00:39:22,320 In modo che sembra davvero utile. 614 00:39:22,320 --> 00:39:23,810 Ora diamo trascinarlo e rilasciarlo. 615 00:39:23,810 --> 00:39:26,880 616 00:39:26,880 --> 00:39:32,670 Wow, abbiamo una visione di testo a nostro avviso, veramente elegante. 617 00:39:32,670 --> 00:39:35,430 Questo è un po 'troppo grande. 618 00:39:35,430 --> 00:39:38,150 Facciamo più piccolo. 619 00:39:38,150 --> 00:39:40,290 Mettere in centro. 620 00:39:40,290 --> 00:39:43,760 Rendere più piccolo pure. 621 00:39:43,760 --> 00:39:50,110 >> Ora abbiamo una visione del testo, che potremmo essere utilizzato per visualizzare il nostro risultato finale. 622 00:39:50,110 --> 00:39:52,860 Ma adesso è sicuramente non andare a lavorare 623 00:39:52,860 --> 00:39:56,970 perché c'è il no-- ViewController abbiamo appena 624 00:39:56,970 --> 00:40:03,010 definito non sa che c'è una vista testo là fuori. 625 00:40:03,010 --> 00:40:06,550 Quindi abbiamo bisogno di qualche modo collegare la visione del testo che abbiamo appena 626 00:40:06,550 --> 00:40:11,660 creato con la classe che è già venuto con noi. 627 00:40:11,660 --> 00:40:14,860 >> Il nostro modo di fare che è in realtà davvero magico. 628 00:40:14,860 --> 00:40:18,190 Quindi aprire storyboard. 629 00:40:18,190 --> 00:40:22,220 C'è una speciale [incomprensibile] chiamato [? assistant?] [incomprensibile]. 630 00:40:22,220 --> 00:40:25,190 Quando si fa clic su questo, è andando ad aprire due file. 631 00:40:25,190 --> 00:40:29,425 Uno è una classe e l'altra è una vista corrispondente per esso. 632 00:40:29,425 --> 00:40:31,920 E 'molto, molto utile. 633 00:40:31,920 --> 00:40:35,950 E facciamo solo passa attraverso il file h. 634 00:40:35,950 --> 00:40:39,110 Controllo, questo è [incomprensibile] logica. 635 00:40:39,110 --> 00:40:47,280 Premere Ctrl e trascinare il vista testo nella dichiarazione. 636 00:40:47,280 --> 00:40:48,780 Stiamo andando a chiamare quel outputView. 637 00:40:48,780 --> 00:40:52,189 638 00:40:52,189 --> 00:40:53,670 Collega. 639 00:40:53,670 --> 00:40:59,420 Così qui abbiamo dichiarato una nuova immobili per la nostra classe ViewController. 640 00:40:59,420 --> 00:41:02,300 E la nuova proprietà è solo la vista testo 641 00:41:02,300 --> 00:41:05,000 abbiamo creato nella costruzione dell'interfaccia. 642 00:41:05,000 --> 00:41:07,990 Quindi, in questo modo abbiamo potuto accesso tutti i dati 643 00:41:07,990 --> 00:41:13,630 e manipolare tutto ciò che si trova all'interno la visualizzazione di output, che è impressionante. 644 00:41:13,630 --> 00:41:19,260 >> Quindi, nel nostro codice attuale, facciamo qualcosa con esso. 645 00:41:19,260 --> 00:41:23,810 Così, questa volta, quando noi siamo come la stampa il risultato finale per Mario, 646 00:41:23,810 --> 00:41:28,020 siamo in non registrazione nulla. 647 00:41:28,020 --> 00:41:30,080 Voglio dire che potevamo tenere la dichiarazione di registrazione. 648 00:41:30,080 --> 00:41:41,490 In aggiunta a ciò, abbiamo inviare la lettura che abbiamo appena 649 00:41:41,490 --> 00:41:47,622 creato alla vista di uscita, che è una UI TextView abbiamo appena creato. 650 00:41:47,622 --> 00:41:48,746 Ora vediamo cosa succede. 651 00:41:48,746 --> 00:41:54,470 652 00:41:54,470 --> 00:41:56,620 Wow. 653 00:41:56,620 --> 00:41:59,130 Abbiamo una piramide in app in questo momento. 654 00:41:59,130 --> 00:42:06,720 >> Così l'utente può vedere la nostra produzione perché abbiamo copiato l'uscita dal nostro codice 655 00:42:06,720 --> 00:42:08,045 alla nostra interfaccia. 656 00:42:08,045 --> 00:42:10,950 E 'abbastanza buono. 657 00:42:10,950 --> 00:42:14,990 Non è in realtà che emozionante perché abbiamo can-- 658 00:42:14,990 --> 00:42:18,250 Tutta l'applicazione sta facendo è mostrando una piramide a voi, 659 00:42:18,250 --> 00:42:20,520 e non c'è niente che tu possa fare. 660 00:42:20,520 --> 00:42:22,330 Non è particolarmente eccitante. 661 00:42:22,330 --> 00:42:27,840 Così ora facciamo un tasto che sarà chiaro il punto di vista. 662 00:42:27,840 --> 00:42:30,290 Sembra che un tasto sarà utile. 663 00:42:30,290 --> 00:42:33,270 Trascinare e rilasciare. 664 00:42:33,270 --> 00:42:33,900 Un pulsante. 665 00:42:33,900 --> 00:42:36,730 666 00:42:36,730 --> 00:42:37,320 Button due. 667 00:42:37,320 --> 00:42:49,170 668 00:42:49,170 --> 00:42:52,052 >> Così, quando si clicca sulla sinistra tasto, la visualizzazione dovrebbe risolversi. 669 00:42:52,052 --> 00:42:53,635 Ci dovrebbe essere nulla sullo schermo. 670 00:42:53,635 --> 00:42:56,970 E quando si clicca il tasto destro, Mario, 671 00:42:56,970 --> 00:42:59,740 la vista sta per apparire di nuovo. 672 00:42:59,740 --> 00:43:05,510 Quindi in questo modo facciamo anche il magia roba, il controllo e trascinare 673 00:43:05,510 --> 00:43:08,740 la dichiarazione di classe nell'assistente director-- 674 00:43:08,740 --> 00:43:11,600 nell'assistente spettatore. 675 00:43:11,600 --> 00:43:18,620 In questo caso stiamo specificando che ciò sia un'azione. 676 00:43:18,620 --> 00:43:19,120 clearMario. 677 00:43:19,120 --> 00:43:21,650 678 00:43:21,650 --> 00:43:26,830 >> Così qui abbiamo già creato un'azione chiamata clearMario, 679 00:43:26,830 --> 00:43:34,210 che è il metodo che sarà chiamato ogni volta che si preme il tasto di cancellazione. 680 00:43:34,210 --> 00:43:41,030 Quindi, nella nostra realtà il codice, diciamo solo mettere il testo di output e la vista di uscita 681 00:43:41,030 --> 00:43:44,620 nel nulla, e in questo modo apparirà essere chiaro. 682 00:43:44,620 --> 00:43:47,500 683 00:43:47,500 --> 00:43:57,230 In aggiunta a ciò, creiamo un altro metodo chiamato runMario. 684 00:43:57,230 --> 00:44:00,140 685 00:44:00,140 --> 00:44:03,436 Oh mi dispiace, che non dovrebbe essere una proprietà. 686 00:44:03,436 --> 00:44:12,107 687 00:44:12,107 --> 00:44:13,940 D'accordo, che dovrebbe essere un'azione pure. 688 00:44:13,940 --> 00:44:25,780 689 00:44:25,780 --> 00:44:34,740 >> E quando quella funzione è chiamato, abbiamo appena corriamo Mario dieci. 690 00:44:34,740 --> 00:44:37,620 691 00:44:37,620 --> 00:44:39,780 Speriamo che andrà bene. 692 00:44:39,780 --> 00:44:41,120 Ha compilare? 693 00:44:41,120 --> 00:44:43,920 Sì. 694 00:44:43,920 --> 00:44:45,090 Ora abbiamo una visione. 695 00:44:45,090 --> 00:44:46,560 Abbiamo una produzione. 696 00:44:46,560 --> 00:44:50,040 E facciamo solo vedere cosa succede. 697 00:44:50,040 --> 00:44:52,590 Che è andato. 698 00:44:52,590 --> 00:44:54,500 E 'di nuovo. 699 00:44:54,500 --> 00:44:57,620 Così qui abbiamo specificato che tipo di funzione 700 00:44:57,620 --> 00:45:00,400 sarà chiamato quando scriviamo in qualcosa, 701 00:45:00,400 --> 00:45:03,160 quando premiamo un pulsante specifico. 702 00:45:03,160 --> 00:45:07,890 Questo è fondamentalmente la programma di azione bersaglio 703 00:45:07,890 --> 00:45:12,510 per event driven programmazione in Objective C. 704 00:45:12,510 --> 00:45:15,030 >> In aggiunta a ciò, non è molto eccitante 705 00:45:15,030 --> 00:45:19,810 perché non possiamo davvero cambiare quanto in alto la piramide sarà, 706 00:45:19,810 --> 00:45:23,640 quindi probabilmente si vuole in qualche modo ottenere un ingresso dall'utente 707 00:45:23,640 --> 00:45:29,490 e modificare l'altezza del piramide sulla base di quello che in uscita. 708 00:45:29,490 --> 00:45:32,900 Quindi stiamo andando a farlo. 709 00:45:32,900 --> 00:45:38,720 Così, questa volta, quando chiamiamo runMario, non ci limitiamo a chiamare direttamente Mario. 710 00:45:38,720 --> 00:46:06,280 711 00:46:06,280 --> 00:46:07,000 Il titolo di questo uno. 712 00:46:07,000 --> 00:46:22,180 713 00:46:22,180 --> 00:46:23,700 >> Delegato. 714 00:46:23,700 --> 00:46:25,160 Questo è molto interessante. 715 00:46:25,160 --> 00:46:26,720 Che cosa è un delegato? 716 00:46:26,720 --> 00:46:28,950 Ho intenzione di mettere auto qui. 717 00:46:28,950 --> 00:46:31,038 E stiamo andando a vedere che cosa significa più tardi. 718 00:46:31,038 --> 00:46:46,380 719 00:46:46,380 --> 00:46:51,120 Così qui abbiamo praticamente creato una caso specifico chiamato un avviso UI 720 00:46:51,120 --> 00:46:52,210 view. 721 00:46:52,210 --> 00:46:54,440 Una vista di allerta UI è fondamentalmente quello che volete 722 00:46:54,440 --> 00:46:58,940 vedere ogni volta che qualcosa pops e si chiede per l'ingresso, 723 00:46:58,940 --> 00:47:03,080 come quello che accadrà quando si sta cercando per l'acquisto di qualcosa su un app store. 724 00:47:03,080 --> 00:47:14,250 >> In aggiunta a ciò, dopo aver crearla, dobbiamo solo mostrare l'avviso. 725 00:47:14,250 --> 00:47:20,090 726 00:47:20,090 --> 00:47:22,568 Va bene, facciamo solo rapidamente Test voglio che il lavoro oppure no. 727 00:47:22,568 --> 00:47:31,105 728 00:47:31,105 --> 00:47:32,140 Questo è molto cool. 729 00:47:32,140 --> 00:47:55,370 730 00:47:55,370 --> 00:47:59,120 Ora diamo realmente creare un campo di input per l'avviso UI. 731 00:47:59,120 --> 00:48:01,170 Questo è il modo in cui facciamo. 732 00:48:01,170 --> 00:48:07,490 E dovremmo avere un Vista ingresso per la segnalazione. 733 00:48:07,490 --> 00:48:09,020 Very cool. 734 00:48:09,020 --> 00:48:12,330 Diciamo 10. 735 00:48:12,330 --> 00:48:14,900 >> E non sta facendo niente di buono ora perché la chiamata in realtà 736 00:48:14,900 --> 00:48:17,770 non ha cambiato per l'esecuzione di mario. 737 00:48:17,770 --> 00:48:23,470 Quindi questo è diventato un po po 'strano perché ogni volta 738 00:48:23,470 --> 00:48:30,790 premiamo un pulsante in basso, ogni volta che premere un pulsante nella vista di allerta, 739 00:48:30,790 --> 00:48:35,560 dovesse succedere qualcosa, ma non succede. 740 00:48:35,560 --> 00:48:37,220 Come facciamo a prendere quel? 741 00:48:37,220 --> 00:48:41,280 Come facciamo a sapere che un utente ha respinto una vista avviso 742 00:48:41,280 --> 00:48:45,630 e già inserito un numero, perché in questo momento nulla è realmente accadendo. 743 00:48:45,630 --> 00:48:50,450 >> Beh, si può immaginare bene, la delega. 744 00:48:50,450 --> 00:48:55,440 Quindi, oltre a tutti queste dichiarazioni, 745 00:48:55,440 --> 00:49:03,190 abbiamo bisogno di aggiungere una nuova delegazione di si chiama UI vista avviso delegato. 746 00:49:03,190 --> 00:49:06,440 Così che ogni singola interazione o evento 747 00:49:06,440 --> 00:49:10,190 che stiamo andando ad avere con la vista di allerta UI 748 00:49:10,190 --> 00:49:14,100 sta per essere gestito dalla nostra classe pure. 749 00:49:14,100 --> 00:49:26,297 >> Quindi, in aggiunta a ciò, sarà avviso pulsante View Clicca all'indice. 750 00:49:26,297 --> 00:49:34,260 751 00:49:34,260 --> 00:49:37,730 Questo è raggiunto. 752 00:49:37,730 --> 00:49:42,020 Quindi, in questo caso abbiamo already-- così abbiamo 753 00:49:42,020 --> 00:49:46,210 scoperto un protocollo che gestirà l'evento quando 754 00:49:46,210 --> 00:49:51,320 clicchiamo il pulsante Fine sulla vista di allerta. 755 00:49:51,320 --> 00:49:55,976 Così ogni volta che respingere il vista avviso, questo dovrebbe accadere. 756 00:49:55,976 --> 00:49:57,350 Lasciatemi prova molto rapidamente. 757 00:49:57,350 --> 00:50:16,220 758 00:50:16,220 --> 00:50:19,300 Beh in effetti, abbiamo raggiunto qui. 759 00:50:19,300 --> 00:50:22,210 >> Ecco, ciò che non lo farà effettivamente ottenere è in realtà 760 00:50:22,210 --> 00:50:43,120 otteniamo the-- Quindi vogliamo uscire il testo che abbiamo in precedenza 761 00:50:43,120 --> 00:50:45,350 entrato nella vista di allerta. 762 00:50:45,350 --> 00:50:48,505 E in base al testo, siamo andando a visualizzare Mario. 763 00:50:48,505 --> 00:50:52,336 764 00:50:52,336 --> 00:50:55,480 Questo risulta molto rapidamente se funziona davvero o no. 765 00:50:55,480 --> 00:50:59,476 Quindi, in questo caso, se in ingresso, diciamo, 10, dovremmo vedere 10. 766 00:50:59,476 --> 00:51:02,740 767 00:51:02,740 --> 00:51:05,210 >> Molto bene, abbiamo un numero qui. 768 00:51:05,210 --> 00:51:06,470 E 'abbastanza buono. 769 00:51:06,470 --> 00:51:16,840 Ora l'ultimo passo sarà essere-- Così il ultimo passo che dobbiamo fare in questo momento 770 00:51:16,840 --> 00:51:21,100 è solo un Mario chiamare con livello base all'input 771 00:51:21,100 --> 00:51:23,270 che abbiamo messo in vista avviso. 772 00:51:23,270 --> 00:51:26,920 Quindi abbiamo bisogno di convertire questa stringa in iOS. 773 00:51:26,920 --> 00:51:33,820 774 00:51:33,820 --> 00:51:35,496 Troppopieno statica è molto impressionante. 775 00:51:35,496 --> 00:51:44,930 776 00:51:44,930 --> 00:51:51,182 E poi chiamiamo semplicemente auto valore marioWithLevels. 777 00:51:51,182 --> 00:51:54,550 778 00:51:54,550 --> 00:51:56,284 Vediamo che sarà in realtà lavorare o meno. 779 00:51:56,284 --> 00:51:59,070 780 00:51:59,070 --> 00:52:01,550 >> Stiamo già dato una piramide. 781 00:52:01,550 --> 00:52:04,785 Proviamo a cambiare l'altezza. 782 00:52:04,785 --> 00:52:06,530 Che in realtà funziona. 783 00:52:06,530 --> 00:52:07,610 E 'piuttosto fresco. 784 00:52:07,610 --> 00:52:10,420 Così che ora si può solo inserire qualsiasi valore desiderato. 785 00:52:10,420 --> 00:52:12,440 Diciamo solo quattro. 786 00:52:12,440 --> 00:52:14,260 Questo è abbastanza impressionante. 787 00:52:14,260 --> 00:52:17,090 Quindi, questo è fondamentalmente un esempio molto veloce 788 00:52:17,090 --> 00:52:23,170 per come creare un progetto in codice s e come collegare realmente rapidamente 789 00:52:23,170 --> 00:52:26,220 alcuni eventi davvero semplici e funzioni. 790 00:52:26,220 --> 00:52:28,840 >> Quindi la sorgente sta per essere messo in linea in seguito. 791 00:52:28,840 --> 00:52:33,400 Quindi, se siete interessati in come funziona iOS Mario, 792 00:52:33,400 --> 00:52:38,360 Ho intenzione di mettere esattamente la stessa progetti sul sito CS50 tardi. 793 00:52:38,360 --> 00:52:41,260 Siamo praticamente finito con il estate, e prima di finire 794 00:52:41,260 --> 00:52:45,190 Voglio solo puntare voi ragazzi a alcune risorse davvero impressionante che 795 00:52:45,190 --> 00:52:47,550 sono disponibili online. 796 00:52:47,550 --> 00:52:52,270 >> Ovviamente la documentazione di Apple sta per essere molto utile. 797 00:52:52,270 --> 00:52:57,630 Ma in aggiunta a questo, soprattutto raccomandare quattro fonti, scuola di codice, 798 00:52:57,630 --> 00:53:02,120 casa sull'albero, AppCoda e WWDC video. 799 00:53:02,120 --> 00:53:07,270 Scuola Codice e casa sull'albero sono due siti web Educative online, 800 00:53:07,270 --> 00:53:10,210 che specificamente fuoco sull'ingegneria del software. 801 00:53:10,210 --> 00:53:16,930 Soprattutto per la scuola del codice, si hanno davvero buon tutorial su iOS. 802 00:53:16,930 --> 00:53:19,550 >> Questo è davvero un rapido esempio per esso. 803 00:53:19,550 --> 00:53:22,980 Essi in realtà creano davvero cute-- guardare quel piccolo iPhone carino 804 00:53:22,980 --> 00:53:24,920 tizio laggiù, è abbastanza impressionante. 805 00:53:24,920 --> 00:53:31,010 E il loro modo di spiegare Obiettivo Sintassi C è perfettamente chiaro. 806 00:53:31,010 --> 00:53:32,230 Tree house è la stessa. 807 00:53:32,230 --> 00:53:34,660 E AppCoda è un forum. 808 00:53:34,660 --> 00:53:38,130 In realtà è un blog che è stato eseguito da un esperto davvero Objective C 809 00:53:38,130 --> 00:53:39,120 programmatore. 810 00:53:39,120 --> 00:53:43,950 E tutti quei tutorial in AppCoda sono piuttosto breve e facile da implementare, 811 00:53:43,950 --> 00:53:45,390 altamente raccomandato. 812 00:53:45,390 --> 00:53:47,700 >> E se sei uno sviluppatore, sicuramente andare a controllare 813 00:53:47,700 --> 00:53:55,660 come i video WWDC dove è possibile conoscere le ultime programmazione iOS 814 00:53:55,660 --> 00:53:58,250 tecniche, API e le librerie. 815 00:53:58,250 --> 00:54:02,850 In modo che sia più o meno per il seminario. 816 00:54:02,850 --> 00:54:03,820 Vi ringrazio tanto. 817 00:54:03,820 --> 00:54:08,040 E spero che vi divertiate creare la propria app iOS. 818 00:54:08,040 --> 00:54:09,302