1 00:00:00,000 --> 00:00:11,420 2 00:00:11,420 --> 00:00:13,590 >> Tianyu LIU: Hey, hvordan er går det alle? 3 00:00:13,590 --> 00:00:20,250 Og dette er iOS App programmering af Objective C seminar. 4 00:00:20,250 --> 00:00:21,520 Og mit navn er Tianyu Liu. 5 00:00:21,520 --> 00:00:26,114 Jeg er en Lowell junior lige nu, koncentrerer i datalogi. 6 00:00:26,114 --> 00:00:28,030 Så i dette seminar er jeg vil lære jer 7 00:00:28,030 --> 00:00:30,770 lidt om hvordan man laver en app. 8 00:00:30,770 --> 00:00:33,030 Yay, få glade for det. 9 00:00:33,030 --> 00:00:36,790 >> Så før vi overhovedet begynder dykning ind i selve programmering side, 10 00:00:36,790 --> 00:00:41,840 lad os bare virkelig hurtigt tale om hvorfor du måske ønsker at opbygge en iOS app? 11 00:00:41,840 --> 00:00:43,940 Hvorfor er iOS så fantastisk? 12 00:00:43,940 --> 00:00:47,250 Så det første problem, det første ting, der er temmelig awesome for os, 13 00:00:47,250 --> 00:00:51,190 især som CS50 studerende, er, at iOS 14 00:00:51,190 --> 00:00:55,860 bruger Mål C. Tja, der er et nyt sprog kaldet Swift, 15 00:00:55,860 --> 00:00:58,260 men vi kommer ikke til at bruge det i dette seminar. 16 00:00:58,260 --> 00:01:01,540 Hvis du er interesseret i Swift, der er en selvstændig seminar om. 17 00:01:01,540 --> 00:01:05,590 Men Objective C er dybest set en overordnet C. Betydning 18 00:01:05,590 --> 00:01:10,230 at alt hvad du bruger i C kan oversættes til Objective C 19 00:01:10,230 --> 00:01:11,630 meget let. 20 00:01:11,630 --> 00:01:15,730 >> Som du kan se senere, at ja Der er nogle meget grundlæggende syntaks, er 21 00:01:15,730 --> 00:01:19,790 dybest set nøjagtig det samme, C og Objective C. Så 22 00:01:19,790 --> 00:01:22,860 siden du har taget CS50 op så langt, du allerede 23 00:01:22,860 --> 00:01:26,500 kender Objective C, mindst 40%. 24 00:01:26,500 --> 00:01:30,720 Også Apple har en virkelig robust API til iOS. 25 00:01:30,720 --> 00:01:33,750 Der er en masse virkelig skøre ting, du kan gøre med det. 26 00:01:33,750 --> 00:01:36,760 Hvoraf den ene er en faktisk skabt en iOS app 27 00:01:36,760 --> 00:01:40,600 til styring biler, som er temmelig interessant. 28 00:01:40,600 --> 00:01:42,610 Sandsynligvis en helikopter er mere spændende. 29 00:01:42,610 --> 00:01:47,020 Men det er, hvordan magtfulde iOS API kan være. 30 00:01:47,020 --> 00:01:49,340 >> Og som du måske har regnet ud lige nu, 31 00:01:49,340 --> 00:01:53,000 stakken overløb er formentlig en af de vigtigste online-ressourcer 32 00:01:53,000 --> 00:01:54,250 til rådighed for dig. 33 00:01:54,250 --> 00:01:58,090 Og gode nyheder, for hver enkelt problem kan du muligvis 34 00:01:58,090 --> 00:02:01,840 tænke på, mens opbygge din afgangsprojekt i Objective C, 35 00:02:01,840 --> 00:02:05,910 Der er sandsynligvis en stakoverløb svar. 36 00:02:05,910 --> 00:02:07,420 Det er bare fantastisk. 37 00:02:07,420 --> 00:02:12,780 Hertil kommer, at, iOS er virkelig en platform 38 00:02:12,780 --> 00:02:16,260 hvor du kan nå en enorm publikum med lille indsats. 39 00:02:16,260 --> 00:02:20,170 Det er ikke ligesom Android, hvor alt er temmelig fragmenteret. 40 00:02:20,170 --> 00:02:22,540 >> Alt iOS er forenet. 41 00:02:22,540 --> 00:02:25,920 Og så længe du opretter en app til en iPhone, 42 00:02:25,920 --> 00:02:31,260 Du kan meget let port, til iPad, iPad mini, eller forskellige iPhone størrelser. 43 00:02:31,260 --> 00:02:33,050 Disse er alle virkelig praktisk. 44 00:02:33,050 --> 00:02:36,430 Og det er bare rigtig god for imponerende dine venner. 45 00:02:36,430 --> 00:02:38,920 Du kan bare holde en iPhone og fortæl din ven hey, 46 00:02:38,920 --> 00:02:40,250 det er den app jeg laver. 47 00:02:40,250 --> 00:02:43,860 Du kan gøre det for enhver desktop apps, hvilket er rart. 48 00:02:43,860 --> 00:02:48,870 >> Okay, lad os nu rent faktisk får til det sprog Formål C. 49 00:02:48,870 --> 00:02:52,910 Så hvorfor skal vi ikke starte med nogle virkelig grundlæggende syntaks. 50 00:02:52,910 --> 00:02:57,410 Som jeg nævnte før mål C Det er dybest set en overordnet C. 51 00:02:57,410 --> 00:03:01,860 Så en masse grundlæggende syntaks er faktisk nøjagtig det samme. 52 00:03:01,860 --> 00:03:06,150 Erklære en variabel og tilføje to variabler sammen 53 00:03:06,150 --> 00:03:09,440 er præcis som vi har gjort i Mario. 54 00:03:09,440 --> 00:03:11,140 Intet nyt her. 55 00:03:11,140 --> 00:03:17,370 >> Tilsvarende logerende for løkke og tilstand er også den samme. 56 00:03:17,370 --> 00:03:22,370 Du kan gøre en for-løkke, ligesom du har gjort i en Mario [uhørligt]. 57 00:03:22,370 --> 00:03:26,280 Og du kan gøre vilkår ligesom hvad du 58 00:03:26,280 --> 00:03:29,240 har gjort i dine tidligere p-apparater. 59 00:03:29,240 --> 00:03:33,400 Men Objective C ikke er helt C, 60 00:03:33,400 --> 00:03:36,640 og der er noget, er lidt underligt om det. 61 00:03:36,640 --> 00:03:42,340 >> Den første er, at når du er gør C programmering, du typisk kalder 62 00:03:42,340 --> 00:03:46,310 indeholde og derefter et bibliotek navn. 63 00:03:46,310 --> 00:03:49,860 Men i Objective C kalder at importere. 64 00:03:49,860 --> 00:03:53,100 Dybest set siger funktionalitet, bare forskellige navne. 65 00:03:53,100 --> 00:03:55,940 Og strengene er faktisk en lille smule underligt. 66 00:03:55,940 --> 00:03:58,250 Du kan se, at den første ting, der er lidt underligt 67 00:03:58,250 --> 00:04:04,190 er, at du har en temmelig weird-- sorry-- du har en temmelig underlige NS 68 00:04:04,190 --> 00:04:04,960 log herovre. 69 00:04:04,960 --> 00:04:07,452 70 00:04:07,452 --> 00:04:09,160 Og den anden ting det er lidt underligt 71 00:04:09,160 --> 00:04:14,090 er du har et snabel før faktisk erklære strengen. 72 00:04:14,090 --> 00:04:19,209 Så snabel dybest set betyder at en streng er ikke kun en streng, 73 00:04:19,209 --> 00:04:20,880 det er faktisk et objekt. 74 00:04:20,880 --> 00:04:22,780 Vi kommer til at forklare der senere så ikke 75 00:04:22,780 --> 00:04:25,800 panik, hvis du ikke gør forstå, hvad det betyder. 76 00:04:25,800 --> 00:04:29,980 Og udskrivning til konsollen er en lille smule anderledes, fordi i C, vi kalder printf, 77 00:04:29,980 --> 00:04:33,350 men i Objective C, vi kalder [uhørligt]. 78 00:04:33,350 --> 00:04:35,640 >> Du kan være undrende hvad er det. 79 00:04:35,640 --> 00:04:38,070 Det er dybest set printf, bare et andet sprog. 80 00:04:38,070 --> 00:04:41,370 Præcis det samme forbrug, nøjagtig samme funktionalitet. 81 00:04:41,370 --> 00:04:44,060 Jamen det viser sig, at Objective C faktisk 82 00:04:44,060 --> 00:04:50,040 har en ns præfiks i næsten alt, hver grundlæggende datatype, 83 00:04:50,040 --> 00:04:52,690 NSString, nsarray, nsdictionary. 84 00:04:52,690 --> 00:04:56,340 Årsagen er, at ns faktisk står for Next Step, 85 00:04:56,340 --> 00:04:59,980 som er en virksomhed, Steve Jobs har grundlagt, 86 00:04:59,980 --> 00:05:03,960 som er en virksomhed, hvor den sprog Objective C er født. 87 00:05:03,960 --> 00:05:06,140 Så det er dybest set tradition. 88 00:05:06,140 --> 00:05:09,010 Jeg ved, det er en lille smule underligt, men det er Apple. 89 00:05:09,010 --> 00:05:16,840 >> Så noget, der er endnu mere mærkelig end der er en funktion erklæring. 90 00:05:16,840 --> 00:05:22,600 Det er meget forskelligt fra det, vi se i C, for her er det faktisk 91 00:05:22,600 --> 00:05:25,190 ikke ligner C længere. 92 00:05:25,190 --> 00:05:28,810 Hvad du har her-- af måde, dette ikke er et led, 93 00:05:28,810 --> 00:05:30,690 dette er et minustegn. 94 00:05:30,690 --> 00:05:36,440 Du har en minustegn parentes ugyldige og derefter funktionen navn. 95 00:05:36,440 --> 00:05:38,450 Lad os bare sige, hvis vi har hej verden, så 96 00:05:38,450 --> 00:05:42,820 afkastet type ville være ugyldige fordi vi vender tilbage ingenting. 97 00:05:42,820 --> 00:05:44,680 >> Hvad får virkelig underligt er, at når du er 98 00:05:44,680 --> 00:05:49,580 har mere end én parameter passerer ind i en samme funktion, 99 00:05:49,580 --> 00:05:53,870 vil være virkelig underligt, som vist her. 100 00:05:53,870 --> 00:05:58,230 Vi har en metode navn, kaldet addInt til [uhørligt] 101 00:05:58,230 --> 00:06:00,370 og vi passerer en parameter. 102 00:06:00,370 --> 00:06:05,170 Men efter det, vi har mere metodenavnet opkald med. 103 00:06:05,170 --> 00:06:08,500 Og efter med vi passerer den anden parameter. 104 00:06:08,500 --> 00:06:11,940 Dette er faktisk en lille smule underligt, Men alle disse funktionserklæringer 105 00:06:11,940 --> 00:06:14,770 følger det samme mønster som dette. 106 00:06:14,770 --> 00:06:17,450 >> Vi har et minus at begynde med. 107 00:06:17,450 --> 00:06:21,550 Minustegnet kunne være et plustegn undertiden baseret på, hvad slags metode 108 00:06:21,550 --> 00:06:22,340 er det. 109 00:06:22,340 --> 00:06:25,000 Metode er dybest set et andet navn for funktionen. 110 00:06:25,000 --> 00:06:26,760 Og vi vil forklarer, at senere, når 111 00:06:26,760 --> 00:06:30,580 vi taler om objekt orienteret programmering. 112 00:06:30,580 --> 00:06:34,300 Du skal først angive tilbagevenden skrive i parenteser, 113 00:06:34,300 --> 00:06:37,450 hvorefter kommer fremgangsmåden navn. 114 00:06:37,450 --> 00:06:40,310 Du passerer en parameter. 115 00:06:40,310 --> 00:06:44,750 Og hvis du har flere parametre du har brug for at udvide metoden navn 116 00:06:44,750 --> 00:06:46,770 og dybest set skrive noget mere her. 117 00:06:46,770 --> 00:06:48,090 >> Det kunne være noget, du ønsker. 118 00:06:48,090 --> 00:06:50,140 I vores tilfælde er det med. 119 00:06:50,140 --> 00:06:56,160 Men du kunne sige ende, eller, eller, eller abc fuld bar, hvad du vil. 120 00:06:56,160 --> 00:06:59,500 Og så efter at du er passerer parameter f. 121 00:06:59,500 --> 00:07:01,750 Dette er en virkelig underlig konvention men vi er 122 00:07:01,750 --> 00:07:05,800 kommer til at se, hvorfor Apple ønskede at gøre det meget hurtigt. 123 00:07:05,800 --> 00:07:10,530 Så hvordan kan du kalde funktionen? 124 00:07:10,530 --> 00:07:15,520 Opkald til en funktion i mål C er også forskellig fra C. 125 00:07:15,520 --> 00:07:18,170 >> Faktisk, at kalde en funktion i Objective C 126 00:07:18,170 --> 00:07:21,030 er mere som du taler med nogen. 127 00:07:21,030 --> 00:07:27,030 Her har vi selv, som kaldes et objekt. 128 00:07:27,030 --> 00:07:33,830 Du er dybest set fortælle objekt selv at sige "Hello World!" 129 00:07:33,830 --> 00:07:36,830 Det er sådan, at kalde funktionen. 130 00:07:36,830 --> 00:07:41,690 Et objekt og en fremgangsmåde navn kombineres med hinanden. 131 00:07:41,690 --> 00:07:49,600 Og det er her, den underlige udvidelse for metoden navn virkelig kommer i spil. 132 00:07:49,600 --> 00:07:52,150 >> Lad os se på det andet eksempel. 133 00:07:52,150 --> 00:07:56,780 Vi har lige fastlagt en metode, der kaldes addInt med bla bla bla. 134 00:07:56,780 --> 00:08:00,066 Så i dette tilfælde, når du ringer den specifikke [? besked?] det vil 135 00:08:00,066 --> 00:08:02,035 at ligne selv addInt: 10 med: 2. 136 00:08:02,035 --> 00:08:05,410 137 00:08:05,410 --> 00:08:08,070 Det lyder som engelsk. 138 00:08:08,070 --> 00:08:11,980 Selvom funktionen funktionserklæringen er underligt, 139 00:08:11,980 --> 00:08:15,600 punktet af mål C'er metode erklæring mønster, 140 00:08:15,600 --> 00:08:18,830 er, at når du ringer funktionen eller metoden 141 00:08:18,830 --> 00:08:21,980 det vil lyde som faktiske engelsk. 142 00:08:21,980 --> 00:08:25,270 Så det er meget intuitivt når du kommer ind i det. 143 00:08:25,270 --> 00:08:28,740 >> Især i dette tilfælde, hvor du kan stort set 144 00:08:28,740 --> 00:08:33,010 se, at funktionen navn er slags dokumentere selv. 145 00:08:33,010 --> 00:08:35,390 Du behøver ikke nogen mere forklaring for at se 146 00:08:35,390 --> 00:08:42,770 hvad der præcist sker, hvad præcis én parameter gør. 147 00:08:42,770 --> 00:08:48,470 Går ud over det, lad os tale lidt lidt om objektorienteret programmering. 148 00:08:48,470 --> 00:08:52,160 Objektorienteret programmering er en af ​​de grundlæggende programmering 149 00:08:52,160 --> 00:08:57,110 teknikker eller mønstre, der er bruges af mål C. Objective C 150 00:08:57,110 --> 00:09:03,110 kaldes Objective C, ikke C, for en virkelig god grund. 151 00:09:03,110 --> 00:09:07,560 >> Så før vi kommer ind i Objective C syntaks, 152 00:09:07,560 --> 00:09:11,670 Lad os virkelig hurtigt se på hvad der præcist er et objekt. 153 00:09:11,670 --> 00:09:15,480 Vi har sikkert gjort noget lignende objekt før, hvilket 154 00:09:15,480 --> 00:09:19,780 kaldes struct, når du er gennemførelse et træ eller en sammenkædet liste 155 00:09:19,780 --> 00:09:25,730 eller [? prøve. ?] Så det er dybest set som en struct, 156 00:09:25,730 --> 00:09:28,560 men det er langt mere magtfulde end det. 157 00:09:28,560 --> 00:09:33,150 Et formål har metoder og egenskaber. 158 00:09:33,150 --> 00:09:35,310 Metoder er grundlæggende funktioner. 159 00:09:35,310 --> 00:09:39,480 Fungerer Dybest set, at en for et bestemt objekt. 160 00:09:39,480 --> 00:09:45,440 >> Og egenskaber er dybest set den felt, du angiver i struct. 161 00:09:45,440 --> 00:09:48,500 Så for hver enkelt genstand vi har nogle ejendom 162 00:09:48,500 --> 00:09:53,160 der har nogle variable, der er specifikke for objektet. 163 00:09:53,160 --> 00:09:57,170 Og vi har nogle funktioner, som er også specifik for objektet. 164 00:09:57,170 --> 00:10:01,180 Og de funktioner kaldes metoder og variablerne kaldes egenskaber. 165 00:10:01,180 --> 00:10:03,190 Det er bare en fancy navn. 166 00:10:03,190 --> 00:10:10,440 Mens du faktisk hver enkelt visning du se, mens du åbner en iOS app, 167 00:10:10,440 --> 00:10:17,720 lad os bare sige Twitter eller Facebook, hver enkelt visning, du ser, er et objekt. 168 00:10:17,720 --> 00:10:22,110 Og selv hele app et objekt til at begynde med. 169 00:10:22,110 --> 00:10:25,340 Meget interessant koncept. 170 00:10:25,340 --> 00:10:28,480 >> Og hvorfor ønsker vi objekt orienteret programmering? 171 00:10:28,480 --> 00:10:33,530 Så du kan forestille dig, at når du program, det bliver temmelig kompliceret. 172 00:10:33,530 --> 00:10:36,400 Lad os bare sige, når du er gennemførelse skakbræt, 173 00:10:36,400 --> 00:10:40,020 logikken vil være virkelig kompliceret. 174 00:10:40,020 --> 00:10:43,280 Du har 36 forskellige stykker, således at hvis man 175 00:10:43,280 --> 00:10:48,370 ønsker at skrive logik for alle 36 forskellige stykker i skak, 176 00:10:48,370 --> 00:10:52,150 der kommer til at være en masse forskellige funktioner og variabler. 177 00:10:52,150 --> 00:10:54,070 Det er en masse besvær. 178 00:10:54,070 --> 00:10:58,980 Og sandsynligvis du vil skrive en anden metode eller anden funktion 179 00:10:58,980 --> 00:11:03,950 for hvert af stykket til præcis styre, hvad de gør. 180 00:11:03,950 --> 00:11:08,830 >> Men hvis du gør objektorienterede programmering, alle disse stykker 181 00:11:08,830 --> 00:11:12,440 kan indvindes i en enkelt genstand. 182 00:11:12,440 --> 00:11:16,111 Og objektet vil have nogle fælles egenskaber, ligesom hvilken slags stykke 183 00:11:16,111 --> 00:11:16,610 er det? 184 00:11:16,610 --> 00:11:17,740 Hvilken farve er det? 185 00:11:17,740 --> 00:11:19,480 Hvordan kan det bevæge sig? 186 00:11:19,480 --> 00:11:24,660 Og på den måde har du i høj grad forenklet logik det. 187 00:11:24,660 --> 00:11:28,480 Så det er bare en rigtig god måde at gøre komplicerede programmer, 188 00:11:28,480 --> 00:11:33,700 og hierarkisk forhold i programmet, meget enkel. 189 00:11:33,700 --> 00:11:36,800 Som vi kommer til at se hvorfor meget hurtigt, når 190 00:11:36,800 --> 00:11:39,660 vi faktisk gør programming-- når vi er faktisk 191 00:11:39,660 --> 00:11:42,830 gør et S-kode programmeringen senere. 192 00:11:42,830 --> 00:11:48,120 >> Nå ud over denne, objektorienteret programmering 193 00:11:48,120 --> 00:11:50,030 er bare en masse sjov. 194 00:11:50,030 --> 00:11:51,990 Du fik at designe din egen objekt. 195 00:11:51,990 --> 00:11:56,080 Du fik til at designe hvad betyder det ligner ved dig selv. 196 00:11:56,080 --> 00:11:58,250 Der er ingen rigtige svar på det. 197 00:11:58,250 --> 00:12:02,940 Og det er helt interessant. 198 00:12:02,940 --> 00:12:07,270 Så i objektorienteret programmering, to grundlæggende begreber 199 00:12:07,270 --> 00:12:10,130 vil være klasse og instans. 200 00:12:10,130 --> 00:12:13,570 En klasse er dybest set en skabelon til objekt. 201 00:12:13,570 --> 00:12:18,070 Og en instans er dybest set en bestemt genstand. 202 00:12:18,070 --> 00:12:21,090 >> Lad os bare sige, at du laver en cookie. 203 00:12:21,090 --> 00:12:24,800 I dette tilfælde hver enkelt cookie du faktisk ender med 204 00:12:24,800 --> 00:12:27,310 bliver et objekt. 205 00:12:27,310 --> 00:12:35,830 Men cookie plade, du bruger til at bage alle cookies vil være en klasse. 206 00:12:35,830 --> 00:12:37,880 En klasse er dybest set en skabelon. 207 00:12:37,880 --> 00:12:46,170 Og eksempel vil være en specifik objekt skabt ud af denne klasse. 208 00:12:46,170 --> 00:12:49,970 >> Og en instans vil blive oprettet baseret på klasse erklæring, 209 00:12:49,970 --> 00:12:56,760 som vi vil se i senere dias. 210 00:12:56,760 --> 00:13:00,010 Så lad os rent faktisk gør en virkelig hurtig eksempel [uhørligt]. 211 00:13:00,010 --> 00:13:04,280 Lad os sige, vi erklære et objekt for en kat. 212 00:13:04,280 --> 00:13:07,930 Objektet skal have-- katten klasse bør 213 00:13:07,930 --> 00:13:11,260 har nogle egenskaber og metoder. 214 00:13:11,260 --> 00:13:17,300 Hvilken slags egenskaber skal de klasse have-- skal katten have? 215 00:13:17,300 --> 00:13:20,580 >> For eksempel, farve, alder og race, der 216 00:13:20,580 --> 00:13:24,440 vil være variable, er specifikke for hver kat. 217 00:13:24,440 --> 00:13:27,790 Og dem er nogle ting som vi bruger til at beskrive en kat. 218 00:13:27,790 --> 00:13:31,880 Hvilken slags metode, eller hvad kan en kat gøre? 219 00:13:31,880 --> 00:13:37,160 Nogle hurtige eksempler kunne være chase mus, spise fisk eller bare meow. 220 00:13:37,160 --> 00:13:40,900 Dette er en virkelig hurtig eksempel på kat klasse. 221 00:13:40,900 --> 00:13:46,920 Og en rigtig specifik cat objekt vil være en kat 222 00:13:46,920 --> 00:13:50,930 hvor vi specificere farve, alder og race. 223 00:13:50,930 --> 00:13:53,790 >> I så fald vores objekt er ikke længere en klasse længere. 224 00:13:53,790 --> 00:14:00,010 Vi kopierer skabelonen fra klassen og vi angiver hver specifikke oplysninger 225 00:14:00,010 --> 00:14:04,510 til det specifikke objekt at det er uafhængigt. 226 00:14:04,510 --> 00:14:09,350 Og når du ringer en metode i et objekt, 227 00:14:09,350 --> 00:14:16,640 du bare ringe meow på objektet, der er katten, du lige har oprettet. 228 00:14:16,640 --> 00:14:19,020 >> Sandsynligvis vil du udskrive noget lignende "Hello World! 229 00:14:19,020 --> 00:14:20,000 Meow ". 230 00:14:20,000 --> 00:14:22,110 Temmelig sød. 231 00:14:22,110 --> 00:14:24,500 Okay, lad os bare komme ind i nogle detaljer 232 00:14:24,500 --> 00:14:30,650 og se, hvad der præcist gør, at udslag i at være iOS programmering. 233 00:14:30,650 --> 00:14:36,500 Så i iOS programmering hver eneste klasse vil blive gennemført i to filer. 234 00:14:36,500 --> 00:14:41,420 En fil er her, som kaldes grænsefladen. 235 00:14:41,420 --> 00:14:45,300 En anden fil er her, som kaldes gennemførelse. 236 00:14:45,300 --> 00:14:48,890 >> Typisk grænsefladen vil have extension.h 237 00:14:48,890 --> 00:14:51,740 som vi har set i C-biblioteker. 238 00:14:51,740 --> 00:14:56,340 Og implementering fil er vil have extension.n. 239 00:14:56,340 --> 00:14:57,260 Det er lidt underligt. 240 00:14:57,260 --> 00:15:01,270 Men .N betyder faktisk .c, er der ingen grundlæggende forskel mellem dem, 241 00:15:01,270 --> 00:15:02,100 to. 242 00:15:02,100 --> 00:15:06,650 Så i dette tilfælde, kan vi se, at vi er erklære interface, Cat: objekt. 243 00:15:06,650 --> 00:15:10,660 244 00:15:10,660 --> 00:15:13,760 Det kaldes arv. 245 00:15:13,760 --> 00:15:19,170 Vi dybest set arve kat klasse fra objektet klassen. 246 00:15:19,170 --> 00:15:24,790 Så hver egenskab og metode, der var tidligere defineret i objektet klasse 247 00:15:24,790 --> 00:15:28,560 vil automatisk blive defineret i en kat klasse samt. 248 00:15:28,560 --> 00:15:35,900 >> Ud over, at vi definerer farve, race og alder, tre variabler. 249 00:15:35,900 --> 00:15:39,360 Det faktisk ligner noget du har gjort før. 250 00:15:39,360 --> 00:15:41,770 Det ligner struct. 251 00:15:41,770 --> 00:15:44,950 Det er dybest set den syntaks for struct erklæring, 252 00:15:44,950 --> 00:15:47,710 og det er helt korrekt. 253 00:15:47,710 --> 00:15:51,825 Og da jeg nævnte før, forskellen en struct 254 00:15:51,825 --> 00:15:53,960 og et objekt, en af ​​de grundlæggende forskelle 255 00:15:53,960 --> 00:15:59,080 er, at et objekt har metode, mens en struct kun variabler. 256 00:15:59,080 --> 00:16:03,450 Så ud over de egenskaber, eller variable, vi har oprettet til formålet, 257 00:16:03,450 --> 00:16:05,700 vi angiver nogle metode. 258 00:16:05,700 --> 00:16:09,720 >> Lad os bare sige her har vi to metoder, den ene er meow, 259 00:16:09,720 --> 00:16:12,460 en anden er chase mus. 260 00:16:12,460 --> 00:16:18,600 Vi sandsynligvis vil være passerer en parameter baseret på vores tidligere metode 261 00:16:18,600 --> 00:16:20,440 erklæring mønster. 262 00:16:20,440 --> 00:16:22,160 Du ønsker sikkert at være forbi en mus. 263 00:16:22,160 --> 00:16:25,180 Og du vil sikkert gerne at returnere en bool giver til 264 00:16:25,180 --> 00:16:30,010 hvis din kat har med succes fanget musen eller ej. 265 00:16:30,010 --> 00:16:33,170 >> Dette er grænsefladen, men vi kan se, at grænsefladen faktisk 266 00:16:33,170 --> 00:16:35,150 ikke gør noget. 267 00:16:35,150 --> 00:16:40,800 Det bare fortæller et program hvad exists-- hvad der findes i kattens klassen. 268 00:16:40,800 --> 00:16:43,640 Så, for at program til at gøre noget, 269 00:16:43,640 --> 00:16:46,680 vi nødt til at have med gennemførelsen filer. 270 00:16:46,680 --> 00:16:51,940 Så her er det første, vi gør, er naturligvis vi importerer grænsefladen. 271 00:16:51,940 --> 00:16:56,470 Når vi importerer grænsefladen, vi definerer metoden. 272 00:16:56,470 --> 00:17:00,150 >> Lad os bare sige her meow ville bare udskrive 273 00:17:00,150 --> 00:17:01,740 "Hello World!" til konsollen. 274 00:17:01,740 --> 00:17:04,319 275 00:17:04,319 --> 00:17:08,460 Og efter gennemførelsen fil, vi temmelig meget gjort. 276 00:17:08,460 --> 00:17:14,530 Dette er dybest set en klasse erklæring for en klasse. 277 00:17:14,530 --> 00:17:19,970 Så nu er spørgsmålet bliver, hvordan kan du erklære en variabel? 278 00:17:19,970 --> 00:17:26,880 Den måde, du bruger en klasse til at skabe en objekt i Objective C er skrevet her. 279 00:17:26,880 --> 00:17:30,730 >> Du skal først angive, at dette er en kat pointer, 280 00:17:30,730 --> 00:17:38,700 fordi hvert objekt i Objective C endeligt implementeret som en pointer. 281 00:17:38,700 --> 00:17:46,210 Og du kalder klassen, kalde dem som Alloc, der egentlig malloc, 282 00:17:46,210 --> 00:17:51,220 fortæller operativsystemet, som du brug for nogle hukommelse til dette objekt. 283 00:17:51,220 --> 00:17:55,780 Efter at du har et objekt allerede, og du bare initialisere det. 284 00:17:55,780 --> 00:17:56,780 Dette er blot konvention. 285 00:17:56,780 --> 00:17:59,390 286 00:17:59,390 --> 00:18:04,410 Jeg ved, det er, er en lille smule underligt, men det er faktisk, hvordan Apple gør ting. 287 00:18:04,410 --> 00:18:07,130 >> Tildeling egenskaber faktisk temmelig ligetil. 288 00:18:07,130 --> 00:18:09,250 Det er meget lig hvad du laver, når 289 00:18:09,250 --> 00:18:13,780 du tildele nogle specifikke felt inde i struct. 290 00:18:13,780 --> 00:18:16,830 Du skal bare nødt variablen navn, ejendommen navn, 291 00:18:16,830 --> 00:18:20,140 og tildele en bestemt værdi til den. 292 00:18:20,140 --> 00:18:24,120 Og kalde en metode er meget ens. 293 00:18:24,120 --> 00:18:29,080 Den kaldende metode er dybest set, hvad jeg taler om 294 00:18:29,080 --> 00:18:32,390 til at kalde enhver metode i mål C. 295 00:18:32,390 --> 00:18:36,660 >> Du passerer et objekt, i dette tilfælde vil være myCat, 296 00:18:36,660 --> 00:18:42,490 og du passerer den metode navn. 297 00:18:42,490 --> 00:18:47,130 Som om du taler med objektet, myCat, som du bør meow. 298 00:18:47,130 --> 00:18:48,570 Det er temmelig interessant. 299 00:18:48,570 --> 00:18:52,010 300 00:18:52,010 --> 00:18:55,680 Efter at der er en mere afgørende design mønster 301 00:18:55,680 --> 00:18:59,940 at vi er nødt til at tale om før det bliver til egentlige S-kode. 302 00:18:59,940 --> 00:19:03,300 Det mønster kaldes hændelsesstyret programmering. 303 00:19:03,300 --> 00:19:09,660 Dette er sandsynligvis også en af ​​de mest grundlæggende ideer i iOS programmering. 304 00:19:09,660 --> 00:19:14,410 >> Så har du sandsynligvis ikke ved, hvad der præcist er hændelsesdrevet programmering, 305 00:19:14,410 --> 00:19:16,990 men det er egentlig ikke så skræmmende. 306 00:19:16,990 --> 00:19:20,400 Godt i virkeligheden, har du allerede gjort før. 307 00:19:20,400 --> 00:19:24,894 Dette er en af ​​de linjer, du har sikkert allerede skrevet i den sidste [uhørligt] 308 00:19:24,894 --> 00:19:26,810 af CS50, google.maps.event.addListener (markør, 309 00:19:26,810 --> 00:19:27,810 "Klik", function () {}) :. 310 00:19:27,810 --> 00:19:32,410 311 00:19:32,410 --> 00:19:37,620 Ved at kalde denne linje, du er væsentlige fortæller computeren 312 00:19:37,620 --> 00:19:42,650 at når begivenhed kaldet "Klik" sker på markøren, 313 00:19:42,650 --> 00:19:43,630 bruge denne funktion. 314 00:19:43,630 --> 00:19:46,910 315 00:19:46,910 --> 00:19:50,950 >> Dette er meget forskelligt fra hvad du gør i mario.c. 316 00:19:50,950 --> 00:19:56,670 I mario.c du bare køre programmet én gang, det giver dig en udgang, 317 00:19:56,670 --> 00:19:58,590 og du er færdig. 318 00:19:58,590 --> 00:20:02,590 Disse er lidt ligesom en shot programmer. 319 00:20:02,590 --> 00:20:05,830 Møde- og drevne programmer er meget, meget anderledes. 320 00:20:05,830 --> 00:20:10,230 Lad os forestille os, hvis Facebook er en et shot program det ikke er virkelig god. 321 00:20:10,230 --> 00:20:13,750 Du skal bare gå til Facebook én gang, og det er gjort. 322 00:20:13,750 --> 00:20:16,700 Det giver dig nogle output og du aldrig fik det tilbage. 323 00:20:16,700 --> 00:20:19,380 Du har aldrig fået noget mere. 324 00:20:19,380 --> 00:20:23,880 >> Så her, især mønsteret vi bruger, er 325 00:20:23,880 --> 00:20:26,940 hændelsesstyrede så hver funktion vil 326 00:20:26,940 --> 00:20:31,480 fanges baseret på, hvad hændelse er sket. 327 00:20:31,480 --> 00:20:34,670 For eksempel, hvis vi har en knap, og vi angiver 328 00:20:34,670 --> 00:20:39,870 at når der klikkes på knappen, kalder funktionen kaldet "Hello World!" 329 00:20:39,870 --> 00:20:47,810 På den måde kan vi virkelig styre funktionen logik 330 00:20:47,810 --> 00:20:50,560 flow i en meget fleksibel måde. 331 00:20:50,560 --> 00:20:55,840 Brugeren kan gøre eller kalde en funktion der allerede er blevet kaldt. 332 00:20:55,840 --> 00:20:59,900 Det er helt baseret på, hvad brugere gør. 333 00:20:59,900 --> 00:21:04,080 >> Så vi kan se, at dette er faktisk meget bedre end mario.c. 334 00:21:04,080 --> 00:21:07,190 Og gode nyhed er, at det er faktisk ikke et nyt koncept. 335 00:21:07,190 --> 00:21:12,140 Du fyre har allerede gjort at der i sidste problem indstillet. 336 00:21:12,140 --> 00:21:16,640 Så i Objective C er der tre forskellige diagrammer 337 00:21:16,640 --> 00:21:19,030 for drevet begivenhed programmering. 338 00:21:19,030 --> 00:21:21,970 Det første diagram er kaldet målrettet aktion, 339 00:21:21,970 --> 00:21:26,990 hvor man binder en knap Tryk med nogen funktion. 340 00:21:26,990 --> 00:21:31,590 Lad os bare sige, når du klikker nogle knap, du kalder en funktion. 341 00:21:31,590 --> 00:21:33,620 Det er meget enkelt målrettet aktion. 342 00:21:33,620 --> 00:21:35,580 >> Den anden er faktisk hårdest en, 343 00:21:35,580 --> 00:21:38,450 det hedder delegation protokol. 344 00:21:38,450 --> 00:21:41,800 Vi kommer til at forklare at i detaljer senere. 345 00:21:41,800 --> 00:21:44,420 Og den tredje vej er meddelelse. 346 00:21:44,420 --> 00:21:46,770 Dette er faktisk ikke meget vigtigt så vidt 347 00:21:46,770 --> 00:21:50,920 da vi er bekymret, fordi chancen at du kommer til at bruge anmeldelsen 348 00:21:50,920 --> 00:21:53,310 i din endelige projekt er temmelig lav. 349 00:21:53,310 --> 00:21:56,440 Så vi kommer til at springe denne del. 350 00:21:56,440 --> 00:21:59,460 >> Og vi kommer til at dykke ind delegation på protokollen. 351 00:21:59,460 --> 00:22:02,380 352 00:22:02,380 --> 00:22:04,470 Så hvad er en protokol? 353 00:22:04,470 --> 00:22:06,450 Eller hvad er en delegation? 354 00:22:06,450 --> 00:22:09,670 Lad os tale om protokol til at starte med. 355 00:22:09,670 --> 00:22:13,360 Protokoller er intet andet end arrangementer. 356 00:22:13,360 --> 00:22:19,230 Men disse begivenheder er givet til du af Apple til at starte med. 357 00:22:19,230 --> 00:22:22,640 For eksempel er jeg ikke helt sikker på, hvor mange af jer 358 00:22:22,640 --> 00:22:27,930 fyre bruger Apples originale app mail eller kontakt, 359 00:22:27,930 --> 00:22:32,180 men hver gang du rulle tabel, og tryk på bestemt celle 360 00:22:32,180 --> 00:22:36,130 på bordet, som er en begivenhed. 361 00:22:36,130 --> 00:22:38,330 >> Og hvis du vil gøre denne begivenhed ved dig selv, 362 00:22:38,330 --> 00:22:40,410 det er faktisk lidt svært. 363 00:22:40,410 --> 00:22:44,880 Så Apple har givet, at selv til dig så du bare kan direkte bruge 364 00:22:44,880 --> 00:22:49,610 begivenheden at gøre noget på egen hånd. 365 00:22:49,610 --> 00:22:52,980 Protokoller er faktisk virkelig, virkelig meget udbredt 366 00:22:52,980 --> 00:22:58,320 i mål C. Godt i Faktisk hver enkelt app 367 00:22:58,320 --> 00:23:00,870 har noget fanget app delegeret. 368 00:23:00,870 --> 00:23:06,330 Inde i sarte er alle de protokoller for indlæsning af app. 369 00:23:06,330 --> 00:23:12,470 >> Lad os bare sige, at der er en begivenhed for app gjorde belastning. 370 00:23:12,470 --> 00:23:18,200 Så hvad der skal ske, når du har skabt en app, når du åbner app, 371 00:23:18,200 --> 00:23:22,630 når du lukker app, eller efter du sætter iPhone på vågeblus. 372 00:23:22,630 --> 00:23:27,480 Disse er alle begivenheder, der har allerede er givet til dig. 373 00:23:27,480 --> 00:23:34,730 Og oprindeligt inde i disse partikler der vil være nogen gennemførelse. 374 00:23:34,730 --> 00:23:39,750 Apple har lige fortalt dig, at denne funktion vil ske, når nogle hændelse sker, 375 00:23:39,750 --> 00:23:44,380 men hvad du gør med det Funktionen er helt op til dig. 376 00:23:44,380 --> 00:23:49,290 >> Delegationen er dybest set fortæller klassen 377 00:23:49,290 --> 00:23:53,060 at du skal håndtere disse protokoller. 378 00:23:53,060 --> 00:23:55,340 Det er en lille smule forvirrende, men det vil være 379 00:23:55,340 --> 00:23:59,380 meget klarere, når vi gør S-koder i aktion. 380 00:23:59,380 --> 00:24:04,760 Delegation på protokollen er faktisk en robust mekanisme i den forstand 381 00:24:04,760 --> 00:24:08,160 at hvis vi gør delegation til en bestemt klasse, 382 00:24:08,160 --> 00:24:12,400 Vi kan i det væsentlige håndtere alle former for arrangementer 383 00:24:12,400 --> 00:24:17,040 bruger nogen klasse vi har, meget praktisk værktøj. 384 00:24:17,040 --> 00:24:21,530 >> Så en hurtig eksempel for delegation på protokol 385 00:24:21,530 --> 00:24:24,120 vil være, hvad jeg lige talte om. 386 00:24:24,120 --> 00:24:26,720 387 00:24:26,720 --> 00:24:30,890 Denne protokol specifikt kaldes tableview [uhørligt] vælge rolle 388 00:24:30,890 --> 00:24:35,480 i [? indeks?] [? tidligere. ?] Så dette en begivenhed, der ville blive fanget, når man 389 00:24:35,480 --> 00:24:39,710 faktisk trykke på en bestemt celle i din tableview, 390 00:24:39,710 --> 00:24:43,570 lad os bare sige i din post eller i din kontaktpersoner app. 391 00:24:43,570 --> 00:24:48,180 >> Inde i en funktion, der var oprindeligt ikke at gøre noget. 392 00:24:48,180 --> 00:24:51,950 Funktionen ikke gøre noget som standard. 393 00:24:51,950 --> 00:24:55,540 Men du kan angive hvad funktionen gør, 394 00:24:55,540 --> 00:24:59,610 givet, hvad du vil have ud af din app. 395 00:24:59,610 --> 00:25:01,610 Meget praktisk værktøj. 396 00:25:01,610 --> 00:25:06,840 Og med alt, er sagt, jeg dybest set 397 00:25:06,840 --> 00:25:11,430 dække nogle meget grundlæggende syntaks og grundlæggende koncept for Objective C 398 00:25:11,430 --> 00:25:15,860 programmering, og vi kan gøre nogle s kode. 399 00:25:15,860 --> 00:25:17,980 Meget mere spændende. 400 00:25:17,980 --> 00:25:21,070 Så s kode er faktisk en lidt overvældende 401 00:25:21,070 --> 00:25:23,330 når du åbner den for første gang. 402 00:25:23,330 --> 00:25:26,640 >> En hurtig bemærkning, så hvis du ønsker at gøre iOS udvikling, 403 00:25:26,640 --> 00:25:29,630 Jeg anbefaler du har en Mac. 404 00:25:29,630 --> 00:25:33,930 Fordi at gøre iOS udvikling på Windows er virkelig, virkelig hårdt. 405 00:25:33,930 --> 00:25:37,560 Det er doable, men det er virkelig hårdt. 406 00:25:37,560 --> 00:25:40,610 Og du helt sikkert gøre ikke ønsker at bruge g redigere. 407 00:25:40,610 --> 00:25:47,950 Så i s kode vi har flere forskellige områder. 408 00:25:47,950 --> 00:25:53,050 Når du først åbner s kode vil du se en navigation område, 409 00:25:53,050 --> 00:25:57,470 som dybest set viser dig alle de filer, der er i dit nuværende projekt. 410 00:25:57,470 --> 00:26:03,590 >> Du har en værktøjslinje område, som er dybest set administrerende synspunkter, 411 00:26:03,590 --> 00:26:08,570 eller nogle lidt hurtig redskaber om s selve koden. 412 00:26:08,570 --> 00:26:11,140 Og dette er den egentlige redaktør området. 413 00:26:11,140 --> 00:26:15,900 Dette område er meget lig g redigere, men meget bedre end g redigere. 414 00:26:15,900 --> 00:26:21,150 Og i denne ret område, er kaldet utility-området. 415 00:26:21,150 --> 00:26:27,170 Området bliver virkelig praktisk når du opretter interface eller angive 416 00:26:27,170 --> 00:26:30,070 nogle hurtige opsætninger til din app. 417 00:26:30,070 --> 00:26:34,570 >> Og det sidste område er debugging. 418 00:26:34,570 --> 00:26:37,970 Dette område indeholder konsollen. 419 00:26:37,970 --> 00:26:43,170 Så når du siger printf, eller NSLog i vores tilfælde, 420 00:26:43,170 --> 00:26:47,330 alle dine resultater er skal udskrives her. 421 00:26:47,330 --> 00:26:48,260 Okay? 422 00:26:48,260 --> 00:26:52,090 Jeg tror vi kan virkelig hurtigt gøre et eksempel til iOS programmering. 423 00:26:52,090 --> 00:26:54,220 Og lad os faktisk åbne s kode. 424 00:26:54,220 --> 00:26:57,210 425 00:26:57,210 --> 00:27:01,346 Så hver gang du åbner op s kode, er det kommer til at dukke op noget lignende. 426 00:27:01,346 --> 00:27:03,220 Det kommer til at spørge dig hvad vil du gøre? 427 00:27:03,220 --> 00:27:06,830 Har du lyst til at starte noget tilfældig, en legeplads, dybest set du 428 00:27:06,830 --> 00:27:11,250 kan bare teste koden uden faktisk forpligte sig til enhver app. 429 00:27:11,250 --> 00:27:13,020 >> Ønsker du at oprette et nyt projekt? 430 00:27:13,020 --> 00:27:16,660 Eller ønsker du at fortsætte arbejder på det eksisterende projekt? 431 00:27:16,660 --> 00:27:20,270 I vores tilfælde vil vi at oprette et nyt projekt. 432 00:27:20,270 --> 00:27:22,980 Så det er virkelig rart, S kode har faktisk allerede 433 00:27:22,980 --> 00:27:26,820 givet dig nogle skabeloner for at skabe objekter. 434 00:27:26,820 --> 00:27:32,680 Hvis du ønsker at gøre et spil, s kode faktisk har et spil skabelon for dig, 435 00:27:32,680 --> 00:27:36,890 har siden baserede applikationer, Fanen baseret applikation. 436 00:27:36,890 --> 00:27:39,280 I dette tilfælde vil vi at gøre noget meget simpelt, 437 00:27:39,280 --> 00:27:43,230 og vi kommer til at bruge en enkelt visning ansøgning. 438 00:27:43,230 --> 00:27:48,270 >> Efter det lige hvad du vil kalde dit produkt, og hvad er dit navn, 439 00:27:48,270 --> 00:27:52,760 hvad er din id, og hvilket sprog bruger du. 440 00:27:52,760 --> 00:27:57,060 Her ønsker vi ikke at tjek at bruge Core Data. 441 00:27:57,060 --> 00:28:00,170 Core Data er dybest set en databasing iOS. 442 00:28:00,170 --> 00:28:05,360 Hvis du gør Core Data, s koden skal definere 443 00:28:05,360 --> 00:28:07,710 en meget mere kompliceret klasser for dig. 444 00:28:07,710 --> 00:28:12,740 Så for at holde alt enkel, vi er bare at undvære Core Data 445 00:28:12,740 --> 00:28:15,290 lige nu. 446 00:28:15,290 --> 00:28:18,030 >> Det problem, vi kommer til at være bruger, er at-- problemet 447 00:28:18,030 --> 00:28:23,770 vi kommer til at være at skabe er, at vi dybest set ønsker at importere Mario fra C 448 00:28:23,770 --> 00:28:25,437 til en iOS app. 449 00:28:25,437 --> 00:28:26,645 Så lad os kalde det Mario-iOS. 450 00:28:26,645 --> 00:28:31,230 451 00:28:31,230 --> 00:28:34,880 Selvfølgelig du angive, hvad du ønsker at sætte i dit projekt. 452 00:28:34,880 --> 00:28:37,870 Og der vi gå. 453 00:28:37,870 --> 00:28:41,390 >> Så dette er en lille smule overvældende, men dette er faktisk 454 00:28:41,390 --> 00:28:43,540 hvad vi lige har set på dias. 455 00:28:43,540 --> 00:28:49,710 Og det første område ser vi lige nu er dybest set projekt konfiguration. 456 00:28:49,710 --> 00:28:53,390 Så alt, hvad du ønsker at gøre projekt, hvilken type enhed, 457 00:28:53,390 --> 00:28:58,810 lad os bare sige, hvilken type enhed ønsker du din app til at blive vist på? 458 00:28:58,810 --> 00:29:01,280 Er det iPhone, iPad eller universel? 459 00:29:01,280 --> 00:29:04,660 Så enhed orientering, alle disse ting. 460 00:29:04,660 --> 00:29:08,490 Ikke meget vigtigt, men kunne være, men dette 461 00:29:08,490 --> 00:29:11,050 er et sted, hvor du oprette dit projekt, hvis du rent faktisk 462 00:29:11,050 --> 00:29:15,180 ønsker at installere til Apple Store. 463 00:29:15,180 --> 00:29:20,420 >> Okay, lad os se på noget, der er inde i vores kode. 464 00:29:20,420 --> 00:29:22,360 Lad os gå gennem filen navigator. 465 00:29:22,360 --> 00:29:30,140 Og disse er alle de filer, der allerede fulgte med skabelonen, meget flot. 466 00:29:30,140 --> 00:29:35,980 Så når vi på en af ​​dem dette er, hvad det ser ud. 467 00:29:35,980 --> 00:29:38,530 Meget lig g redigere. 468 00:29:38,530 --> 00:29:41,340 Men du kan se, at syntaksfremhævning er nok 469 00:29:41,340 --> 00:29:42,780 en lille smule pænere. 470 00:29:42,780 --> 00:29:45,610 Og det er faktisk meget mere magtfulde end g redigering. 471 00:29:45,610 --> 00:29:49,970 Og du kan auto komplet en masse ting for dig, 472 00:29:49,970 --> 00:29:52,370 som vi vil se meget hurtigt. 473 00:29:52,370 --> 00:29:54,100 >> Lad os åbne debugging område. 474 00:29:54,100 --> 00:30:02,790 475 00:30:02,790 --> 00:30:07,000 Okay, som vi kan se, konsollen er lige her. 476 00:30:07,000 --> 00:30:13,840 Dette er, hvad du kommer til at se, hvor du er i printf eller nsloging noget. 477 00:30:13,840 --> 00:30:17,155 Så uden videre, lad os faktisk kompilere app og se hvad der sker. 478 00:30:17,155 --> 00:30:20,000 479 00:30:20,000 --> 00:30:23,410 En væsentlig funktion for s kode, er, at s-kode 480 00:30:23,410 --> 00:30:25,850 kommer med en iPhone simulator. 481 00:30:25,850 --> 00:30:29,820 Så du behøver ikke at have en iPhone til at prøve dit projekt, 482 00:30:29,820 --> 00:30:34,440 s kode kan simulere, at for Dem, som vi kan se lige nu. 483 00:30:34,440 --> 00:30:36,406 >> Det er temmelig nice. 484 00:30:36,406 --> 00:30:38,640 Det tager lidt smule tid til at kompilere 485 00:30:38,640 --> 00:30:43,040 og dybest set har vi en tom ansøgning 486 00:30:43,040 --> 00:30:44,640 som faktisk gør noget. 487 00:30:44,640 --> 00:30:46,175 Men det samler. 488 00:30:46,175 --> 00:30:47,380 Det er temmelig awesome. 489 00:30:47,380 --> 00:30:50,200 Det er meget bedre end C, hva? 490 00:30:50,200 --> 00:30:52,130 Okay, så lad os forsøger at tilføje noget. 491 00:30:52,130 --> 00:30:56,050 492 00:30:56,050 --> 00:31:02,650 En fil, der er en lille smule underligt her kaldes storyboard. 493 00:31:02,650 --> 00:31:08,020 Dette er faktisk en stor, fantastisk funktion til s kode. 494 00:31:08,020 --> 00:31:14,170 Fordi i s-kode, kan du faktisk trække og slip elementer på grænsefladen 495 00:31:14,170 --> 00:31:17,430 og det vil direkte dukke op. 496 00:31:17,430 --> 00:31:18,055 Lad os prøve det. 497 00:31:18,055 --> 00:31:21,230 498 00:31:21,230 --> 00:31:27,236 >> Vi droppe en etiket her, "Hello World !!!" 499 00:31:27,236 --> 00:31:29,740 Vi kan centrere det. 500 00:31:29,740 --> 00:31:30,970 Pretty cool. 501 00:31:30,970 --> 00:31:33,915 Lad os nu køre dette stop simulering. 502 00:31:33,915 --> 00:31:36,940 503 00:31:36,940 --> 00:31:38,700 Her har vi "Hello World !!!" 504 00:31:38,700 --> 00:31:40,810 Vi ikke selv gøre noget kodning endnu. 505 00:31:40,810 --> 00:31:42,750 Hvad dælen sker der? 506 00:31:42,750 --> 00:31:45,880 Dette er, hvordan magtfulde Interface Builder kan være. 507 00:31:45,880 --> 00:31:48,030 Nogen endda sagt, at kan du sandsynligvis blot 508 00:31:48,030 --> 00:31:52,800 fuldføre en app uden skriftlig sandsynligvis tusind linjer kode 509 00:31:52,800 --> 00:31:54,820 blot ved hjælp af Interface Builder. 510 00:31:54,820 --> 00:31:59,680 Men det er nok ikke den bedste måde at gøre det. 511 00:31:59,680 --> 00:32:01,670 >> Lad os faktisk komme ned til kodning. 512 00:32:01,670 --> 00:32:04,860 513 00:32:04,860 --> 00:32:08,330 Så strukturen for filen er faktisk rigtig interessant 514 00:32:08,330 --> 00:32:15,610 fordi, som du måske se, er der er ikke hovedfunktion overalt. 515 00:32:15,610 --> 00:32:17,466 Se? 516 00:32:17,466 --> 00:32:19,340 Som vi nævnte før, du kan se, at dette 517 00:32:19,340 --> 00:32:22,830 er en implementering fil for en bestemt klasse. 518 00:32:22,830 --> 00:32:25,690 Men der er ingen vigtigste steder. 519 00:32:25,690 --> 00:32:27,490 Så hvor er vigtigste? 520 00:32:27,490 --> 00:32:31,970 Faktisk er der en vigtigste, men det vigtigste er faktisk skjult for dig. 521 00:32:31,970 --> 00:32:34,560 Det vigtigste er her. 522 00:32:34,560 --> 00:32:37,120 Det ser bekendt. 523 00:32:37,120 --> 00:32:41,000 >> Så dybest set, hvad iOS gør inde main 524 00:32:41,000 --> 00:32:43,540 er, at når vigtigste er kaldes, som er grundlæggende 525 00:32:43,540 --> 00:32:49,000 når app er udført, er det skaber en genstand kaldet AppDelegate. 526 00:32:49,000 --> 00:32:52,980 527 00:32:52,980 --> 00:32:57,350 Som jeg nævnte før, at hele app er faktisk et objekt af sig selv. 528 00:32:57,350 --> 00:33:02,270 Så på denne måde, grundlæggende iOS app fortæller compileren 529 00:33:02,270 --> 00:33:05,540 at OK, jeg har tænkt mig at oprette et produkt kaldet AppDelegate, 530 00:33:05,540 --> 00:33:07,620 og det vil være min app. 531 00:33:07,620 --> 00:33:09,640 Så skal du gå gennem denne AppDelegate 532 00:33:09,640 --> 00:33:12,040 og se, hvad den fyr laver. 533 00:33:12,040 --> 00:33:14,850 Mit job er gjort for mig. 534 00:33:14,850 --> 00:33:22,070 >> Og i AppDelegate kan du se, at der er nogle virkelig underlige funktioner, 535 00:33:22,070 --> 00:33:25,290 godt faktisk metoder, der Apple har allerede givet dig. 536 00:33:25,290 --> 00:33:27,464 Hvad er disse? 537 00:33:27,464 --> 00:33:31,010 Disse er faktisk blot protokoller at jeg talte om. 538 00:33:31,010 --> 00:33:35,670 Så disse er begivenheder, som Apple har givet dig til at starte med. 539 00:33:35,670 --> 00:33:38,050 Der er intet i nogle af de funktioner lige nu, 540 00:33:38,050 --> 00:33:40,820 men hvis vi ønsker at initialisere noget for vores app 541 00:33:40,820 --> 00:33:46,140 før det bliver til visning enhver visning, vi gør det her. 542 00:33:46,140 --> 00:33:51,150 >> Du kan bare læse navnet, og jeg gætte begivenheden er faktisk rigtig klar. 543 00:33:51,150 --> 00:33:54,160 544 00:33:54,160 --> 00:33:58,350 Så nu main har skabt et objekt for AppDelegate. 545 00:33:58,350 --> 00:34:05,220 Og hvad AppDelegate vil gøre er faktisk også skjult for dig. 546 00:34:05,220 --> 00:34:09,250 Den AppDelegate vil begynde indlæsning af viewcontroller lager. 547 00:34:09,250 --> 00:34:13,170 Så det er dybest set kommer til at starte laste op alle de synspunkter, som du har 548 00:34:13,170 --> 00:34:17,500 og bare gøre visningen baseret på hierarkiet. 549 00:34:17,500 --> 00:34:21,280 >> Så i dette tilfælde har vi kun en opfattelse, som er her. 550 00:34:21,280 --> 00:34:25,060 Så det er den eneste visning der kommer til at hedde. 551 00:34:25,060 --> 00:34:28,159 Den viewcontroller logik er lige her. 552 00:34:28,159 --> 00:34:32,159 Dette er den kode, der faktisk styrer visningen vi lige har set. 553 00:34:32,159 --> 00:34:33,679 Okay, lad os gøre noget her. 554 00:34:33,679 --> 00:34:44,030 555 00:34:44,030 --> 00:34:50,560 Så viewDidLoad lyder som en begivenhed, når de i virkeligheden er dette også en delegeret, 556 00:34:50,560 --> 00:34:52,500 dette er også en protokol. 557 00:34:52,500 --> 00:34:56,350 >> Så uanset udsigten er indlæst, Alt inde i funktionen 558 00:34:56,350 --> 00:34:57,920 vil blive kaldt. 559 00:34:57,920 --> 00:35:02,840 I dette tilfælde skal vi se "Hello Tianyu! "Hvis vi køre programmet. 560 00:35:02,840 --> 00:35:09,820 561 00:35:09,820 --> 00:35:12,842 Det bliver lidt langsom kompilering storyboard filer. 562 00:35:12,842 --> 00:35:15,440 563 00:35:15,440 --> 00:35:18,190 Nå ja, ser vi en udgang til det. 564 00:35:18,190 --> 00:35:20,720 Det er temmelig cool. 565 00:35:20,720 --> 00:35:22,000 Lad os nu rent faktisk gør Mario. 566 00:35:22,000 --> 00:35:25,400 567 00:35:25,400 --> 00:35:27,625 Jeg har tænkt mig at definere fungere meget hurtigt. 568 00:35:27,625 --> 00:35:31,510 569 00:35:31,510 --> 00:35:54,245 marioWithLevels: (int) niveau resultater. 570 00:35:54,245 --> 00:36:01,120 571 00:36:01,120 --> 00:36:06,410 >> Okay, det er faktisk den awesome funktion af s kode auto afslutning. 572 00:36:06,410 --> 00:36:10,680 Så når du skriver om og skriv indtaste, Det har allerede givet op skabelonen 573 00:36:10,680 --> 00:36:12,325 for dig, som er temmelig cool. 574 00:36:12,325 --> 00:36:50,480 575 00:36:50,480 --> 00:36:52,850 Det burde se rigtig kender jer. 576 00:36:52,850 --> 00:36:55,940 577 00:36:55,940 --> 00:36:59,680 Beklager, det er min skyld. 578 00:36:59,680 --> 00:37:15,790 579 00:37:15,790 --> 00:37:18,120 Okay, cool. 580 00:37:18,120 --> 00:37:22,710 Denne logik skal se rigtig kender til jer, især lige Mario. 581 00:37:22,710 --> 00:37:26,140 >> Men vi vil nu udskrive til konsollen hver eneste gang, 582 00:37:26,140 --> 00:37:29,280 fordi vi ønsker at en eller anden måde beholde styr på, hvad vi udskriver. 583 00:37:29,280 --> 00:37:31,810 Vi kommer til at bruge resulterer måde senere, 584 00:37:31,810 --> 00:37:35,010 for at vise print ud føre til brugeren. 585 00:37:35,010 --> 00:37:37,730 Så i stedet er vi bare nslogging alt 586 00:37:37,730 --> 00:37:42,410 som vi opbevare alt i en funktion opkald resultat, 587 00:37:42,410 --> 00:37:44,070 men logikken er nøjagtig den samme. 588 00:37:44,070 --> 00:37:48,030 589 00:37:48,030 --> 00:37:51,800 Når vi er færdig med det, vi bare udskrive vores resultater. 590 00:37:51,800 --> 00:37:59,330 591 00:37:59,330 --> 00:38:04,970 >> Og her i stedet for at udskrive min navn, vi kommer til at kalde en funktion. 592 00:38:04,970 --> 00:38:15,340 593 00:38:15,340 --> 00:38:18,090 Lad os se hvad der sker. 594 00:38:18,090 --> 00:38:21,240 Ups, naturligvis. 595 00:38:21,240 --> 00:38:24,320 Vi har en dejlig lille pyramide herude. 596 00:38:24,320 --> 00:38:28,370 Dette er dybest set C, vi er bare manipulere hvor du kalder en funktion 597 00:38:28,370 --> 00:38:30,010 og hvordan en funktion se ud. 598 00:38:30,010 --> 00:38:31,560 Der er ikke noget anderledes. 599 00:38:31,560 --> 00:38:34,040 Men det er faktisk ikke meget spændende her, 600 00:38:34,040 --> 00:38:37,500 fordi vi ikke kan se noget fra iPhone app. 601 00:38:37,500 --> 00:38:42,120 >> Så hvis du rent faktisk har en iPhone app-- hvis du rent faktisk har Mario iOS ret 602 00:38:42,120 --> 00:38:45,080 nu, du ikke vil at se noget, der 603 00:38:45,080 --> 00:38:49,450 har noget at gøre med Mario, fordi alle disse udgange til en konsol 604 00:38:49,450 --> 00:38:51,620 er skjult fra en bruger. 605 00:38:51,620 --> 00:38:53,850 Det er, hvad du ser, der er "Hello World !!!" 606 00:38:53,850 --> 00:38:55,720 Ikke godt. 607 00:38:55,720 --> 00:39:03,090 Lad os prøve at gøre brugeren se hvad der præcist er vi udskrive. 608 00:39:03,090 --> 00:39:06,000 Så vi behøver ikke at mærke længere. 609 00:39:06,000 --> 00:39:09,800 Lad os prøve og finde ud af noget andet, der kunne være nyttige. 610 00:39:09,800 --> 00:39:12,140 >> Der er faktisk en element, der kaldes 611 00:39:12,140 --> 00:39:16,460 tekstfelt, som kunne være meget nyttig for os. 612 00:39:16,460 --> 00:39:19,880 Det dybest set viser en region af tekst, der kan redigeres. 613 00:39:19,880 --> 00:39:22,320 Så det ser virkelig nyttige. 614 00:39:22,320 --> 00:39:23,810 Lad os trække den og slippe den. 615 00:39:23,810 --> 00:39:26,880 616 00:39:26,880 --> 00:39:32,670 Wow, har vi en tekst visning efter vores opfattelse virkelig dekorativ. 617 00:39:32,670 --> 00:39:35,430 Det er en lille smule for stor. 618 00:39:35,430 --> 00:39:38,150 Lad os gøre det mindre. 619 00:39:38,150 --> 00:39:40,290 Sæt det ind i midten. 620 00:39:40,290 --> 00:39:43,760 Gør det mindre så godt. 621 00:39:43,760 --> 00:39:50,110 >> Nu har vi en tekst visning, som vi kunne bruges til at vise vores endelige resultat. 622 00:39:50,110 --> 00:39:52,860 Men lige nu er det absolut ikke kommer til at arbejde 623 00:39:52,860 --> 00:39:56,970 fordi der er no-- den Viewcontroller vi bare 624 00:39:56,970 --> 00:40:03,010 defineret ved ikke, at der er en tekst visning derude. 625 00:40:03,010 --> 00:40:06,550 Så vi har brug for en eller anden måde knytte tekstvisning vi bare 626 00:40:06,550 --> 00:40:11,660 oprettet med den klasse, er allerede kommet med os. 627 00:40:11,660 --> 00:40:14,860 >> Den måde, vi gør det er faktisk virkelig magiske. 628 00:40:14,860 --> 00:40:18,190 Så åbne storyboard. 629 00:40:18,190 --> 00:40:22,220 Der er en særlig [uhørligt] kaldet [? assistent?] [uhørligt]. 630 00:40:22,220 --> 00:40:25,190 Når du klikker på det, det er vil åbne to filer. 631 00:40:25,190 --> 00:40:29,425 Den ene er en klasse og den anden er en tilsvarende visning for det. 632 00:40:29,425 --> 00:40:31,920 Det er meget, meget hjælpsomme. 633 00:40:31,920 --> 00:40:35,950 Og lad os bare går gennem .h fil. 634 00:40:35,950 --> 00:40:39,110 Kontrol, det er [uhørligt] logik. 635 00:40:39,110 --> 00:40:47,280 Tryk Kontrol og træk tekstvisning i erklæringen. 636 00:40:47,280 --> 00:40:48,780 Vi kommer til at kalde det outputView. 637 00:40:48,780 --> 00:40:52,189 638 00:40:52,189 --> 00:40:53,670 Tilslut. 639 00:40:53,670 --> 00:40:59,420 Så her har vi erklæret en ny ejendomme til vores viewcontroller klasse. 640 00:40:59,420 --> 00:41:02,300 Og den nye egenskab er bare tekstvisning 641 00:41:02,300 --> 00:41:05,000 vi har oprettet i grænsefladen bygningen. 642 00:41:05,000 --> 00:41:07,990 Så på den måde, vi kunne adgang til alle data 643 00:41:07,990 --> 00:41:13,630 og manipulere alt, hvad der er indeni output synspunkt, som er awesome. 644 00:41:13,630 --> 00:41:19,260 >> Så i vores faktiske kode, lad os gøre noget med det. 645 00:41:19,260 --> 00:41:23,810 Så denne tid, hvor vi er som print ud det endelige resultat for Mario, 646 00:41:23,810 --> 00:41:28,020 vi er i ikke logge noget. 647 00:41:28,020 --> 00:41:30,080 Jeg mener, vi kunne holde logningen erklæring. 648 00:41:30,080 --> 00:41:41,490 Ud over det, vi Send udlæsningen vi bare 649 00:41:41,490 --> 00:41:47,622 skabt til output visning, som er et UI TextView vi lige har oprettet. 650 00:41:47,622 --> 00:41:48,746 Lad os nu se hvad der sker. 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 Vi har en pyramide i app lige nu. 654 00:41:59,130 --> 00:42:06,720 >> Så brugeren kan se vores produktion, fordi Vi har kopieret outputtet fra vores kode 655 00:42:06,720 --> 00:42:08,045 vores interface. 656 00:42:08,045 --> 00:42:10,950 Det er temmelig godt. 657 00:42:10,950 --> 00:42:14,990 Det er faktisk ikke så spændende, fordi vi can-- 658 00:42:14,990 --> 00:42:18,250 Alle app gør, er viser en pyramide til dig, 659 00:42:18,250 --> 00:42:20,520 og der er intet du kan gøre ved det. 660 00:42:20,520 --> 00:42:22,330 Det er ikke særlig spændende. 661 00:42:22,330 --> 00:42:27,840 Så lad os nu lave en knap der vil rydde synspunkter. 662 00:42:27,840 --> 00:42:30,290 Synes, at en knap vil være nyttig. 663 00:42:30,290 --> 00:42:33,270 Træk og slip. 664 00:42:33,270 --> 00:42:33,900 One. 665 00:42:33,900 --> 00:42:36,730 666 00:42:36,730 --> 00:42:37,320 Knap to. 667 00:42:37,320 --> 00:42:49,170 668 00:42:49,170 --> 00:42:52,052 >> Så når vi klikker på venstre knappen, skal visningen slettes. 669 00:42:52,052 --> 00:42:53,635 Der bør være noget på skærmen. 670 00:42:53,635 --> 00:42:56,970 Og når vi klikker på højre knap, Mario, 671 00:42:56,970 --> 00:42:59,740 visningen vil blive vist igen. 672 00:42:59,740 --> 00:43:05,510 Så denne måde, vi gør også magiske ting, kontrol og træk 673 00:43:05,510 --> 00:43:08,740 til klassen erklæring i assistent director-- 674 00:43:08,740 --> 00:43:11,600 i assistent fremviser. 675 00:43:11,600 --> 00:43:18,620 I dette tilfælde har vi specificerer at der bør være en handling. 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 >> Så her har vi allerede skabt en handling kaldet clearMario, 679 00:43:26,830 --> 00:43:34,210 som er den metode, der ville blive kaldt når vi trykker på knappen klar. 680 00:43:34,210 --> 00:43:41,030 Så i vores faktisk kode, lad os bare sætte output tekst og output visningen 681 00:43:41,030 --> 00:43:44,620 i ingenting, og på den måde det vil synes at være klar. 682 00:43:44,620 --> 00:43:47,500 683 00:43:47,500 --> 00:43:57,230 Ud over det, så lad os skabe en anden metode kaldet runMario. 684 00:43:57,230 --> 00:44:00,140 685 00:44:00,140 --> 00:44:03,436 Åh undskyld, det bør ikke være en ejendom. 686 00:44:03,436 --> 00:44:12,107 687 00:44:12,107 --> 00:44:13,940 Okay, der skulle være en handling så godt. 688 00:44:13,940 --> 00:44:25,780 689 00:44:25,780 --> 00:44:34,740 >> Og når denne funktion er kaldt, vi bare køre Mario ti. 690 00:44:34,740 --> 00:44:37,620 691 00:44:37,620 --> 00:44:39,780 Forhåbentlig det vil være fint. 692 00:44:39,780 --> 00:44:41,120 Er det kompilere? 693 00:44:41,120 --> 00:44:43,920 Ja. 694 00:44:43,920 --> 00:44:45,090 Nu har vi en visning. 695 00:44:45,090 --> 00:44:46,560 Vi har en udgang. 696 00:44:46,560 --> 00:44:50,040 Og lad os bare se hvad der sker. 697 00:44:50,040 --> 00:44:52,590 Det er gået. 698 00:44:52,590 --> 00:44:54,500 Det er tilbage igen. 699 00:44:54,500 --> 00:44:57,620 Så her har vi angivet hvilken slags funktion 700 00:44:57,620 --> 00:45:00,400 vil blive kaldt, når vi skriver i noget, 701 00:45:00,400 --> 00:45:03,160 når vi trykker på en bestemt knap. 702 00:45:03,160 --> 00:45:07,890 Dette er dybest set den target handlingsprogram 703 00:45:07,890 --> 00:45:12,510 for hændelsesstyrede programmering i mål C. 704 00:45:12,510 --> 00:45:15,030 >> Hertil kommer, at, det er ikke meget spændende 705 00:45:15,030 --> 00:45:19,810 fordi vi kan ikke rigtig ændre hvor højt pyramiden vil være, 706 00:45:19,810 --> 00:45:23,640 så vi sikkert gerne en eller anden måde få et input fra brugeren 707 00:45:23,640 --> 00:45:29,490 og ændre højden af pyramide er baseret på, hvad de output. 708 00:45:29,490 --> 00:45:32,900 Så vi kommer til at gøre det. 709 00:45:32,900 --> 00:45:38,720 Så denne tid, hvor vi kalder runMario, vi ikke bare kalde Mario direkte. 710 00:45:38,720 --> 00:46:06,280 711 00:46:06,280 --> 00:46:07,000 Denne her titel. 712 00:46:07,000 --> 00:46:22,180 713 00:46:22,180 --> 00:46:23,700 >> Delegerede. 714 00:46:23,700 --> 00:46:25,160 Dette er meget interessant. 715 00:46:25,160 --> 00:46:26,720 Hvad er en delegeret? 716 00:46:26,720 --> 00:46:28,950 Jeg har tænkt mig at sætte sig selv her. 717 00:46:28,950 --> 00:46:31,038 Og vi kommer til at se hvad det betyder senere. 718 00:46:31,038 --> 00:46:46,380 719 00:46:46,380 --> 00:46:51,120 Så her har vi dybest set skabt en specifikke tilfælde kaldes en UI alarm 720 00:46:51,120 --> 00:46:52,210 visning. 721 00:46:52,210 --> 00:46:54,440 En visning UI alarm er dybest set, hvad du vil 722 00:46:54,440 --> 00:46:58,940 se hver gang noget pops op og beder dig om input, 723 00:46:58,940 --> 00:47:03,080 Ligesom hvad der vil ske, når du forsøger at købe noget på en app store. 724 00:47:03,080 --> 00:47:14,250 >> Hertil kommer, at, efter at du skabe det, vi viser bare advarslen. 725 00:47:14,250 --> 00:47:20,090 726 00:47:20,090 --> 00:47:22,568 Okay, lad os bare hurtigt test vil, at arbejde eller ej. 727 00:47:22,568 --> 00:47:31,105 728 00:47:31,105 --> 00:47:32,140 Det er meget cool. 729 00:47:32,140 --> 00:47:55,370 730 00:47:55,370 --> 00:47:59,120 Lad os nu faktisk skabe en indtastningsfeltet for UI alarm. 731 00:47:59,120 --> 00:48:01,170 Det er sådan, vi gør det. 732 00:48:01,170 --> 00:48:07,490 Og vi skal have en input visning for indberetningen. 733 00:48:07,490 --> 00:48:09,020 Meget cool. 734 00:48:09,020 --> 00:48:12,330 Lad os bare sige 10. 735 00:48:12,330 --> 00:48:14,900 >> Det er ikke at gøre noget rigtigt nu, fordi opkaldet faktisk 736 00:48:14,900 --> 00:48:17,770 ændrede ikke til udførelse mario. 737 00:48:17,770 --> 00:48:23,470 Så det er blevet lidt smule mærkeligt fordi når 738 00:48:23,470 --> 00:48:30,790 vi trykker på en knap nede, når vi trykke på en knap i indberetningen visning, 739 00:48:30,790 --> 00:48:35,560 noget skulle ske, men det sker ikke. 740 00:48:35,560 --> 00:48:37,220 Hvordan kan vi fange det? 741 00:48:37,220 --> 00:48:41,280 Hvordan ved vi, at en bruger har afvist en alarm visning 742 00:48:41,280 --> 00:48:45,630 og allerede indtastet et nummer, fordi lige nu intet er faktisk sker. 743 00:48:45,630 --> 00:48:50,450 >> Nå, du måske har gættet det rigtige, delegation. 744 00:48:50,450 --> 00:48:55,440 Så ud over alle disse erklæringer, 745 00:48:55,440 --> 00:49:03,190 vi nødt til at tilføje en ny delegation til det hedder UI alarm visning delegeret. 746 00:49:03,190 --> 00:49:06,440 Så at hver enkelt interaktion eller begivenhed 747 00:49:06,440 --> 00:49:10,190 at vi bliver nødt til med visningen UI alarm 748 00:49:10,190 --> 00:49:14,100 vil blive håndteret vores klasse samt. 749 00:49:14,100 --> 00:49:26,297 >> Så ud over at være alarm Udsigt Klik på knappen ved indeks. 750 00:49:26,297 --> 00:49:34,260 751 00:49:34,260 --> 00:49:37,730 Dette er nået. 752 00:49:37,730 --> 00:49:42,020 Så i dette tilfælde har vi already-- så vi har 753 00:49:42,020 --> 00:49:46,210 fandt ud af en protokol, vil håndtere begivenheden når 754 00:49:46,210 --> 00:49:51,320 vi klikker på knappen Udført på vagt udsigt. 755 00:49:51,320 --> 00:49:55,976 Så hver gang vi afvise alarm mening bør dette ske. 756 00:49:55,976 --> 00:49:57,350 Lad mig bare teste det meget hurtigt. 757 00:49:57,350 --> 00:50:16,220 758 00:50:16,220 --> 00:50:19,300 Nå ja, har vi nået her. 759 00:50:19,300 --> 00:50:22,210 >> Så her, hvad vi ikke vil rent faktisk får, er faktisk 760 00:50:22,210 --> 00:50:43,120 få til-- Så vi ønsker at komme ud den tekst, vi har tidligere 761 00:50:43,120 --> 00:50:45,350 opføres i indberetningen visning. 762 00:50:45,350 --> 00:50:48,505 Og baseret på tekst, vi er vil vise Mario. 763 00:50:48,505 --> 00:50:52,336 764 00:50:52,336 --> 00:50:55,480 Dette slår meget hurtigt ud hvis det rent faktisk virker eller ej. 765 00:50:55,480 --> 00:50:59,476 Så i dette tilfælde, hvis vi input, lad os sige, 10, vi skulle se 10. 766 00:50:59,476 --> 00:51:02,740 767 00:51:02,740 --> 00:51:05,210 >> Meget godt, vi har et nummer her. 768 00:51:05,210 --> 00:51:06,470 Det er temmelig godt. 769 00:51:06,470 --> 00:51:16,840 Nu det sidste trin vil være-- Så sidste skridt, vi skal gøre lige nu 770 00:51:16,840 --> 00:51:21,100 er bare en ringe Mario med niveau baseret på input 771 00:51:21,100 --> 00:51:23,270 at vi har lagt i alarm visning. 772 00:51:23,270 --> 00:51:26,920 Så vi er nødt til at konvertere denne streng i iOS. 773 00:51:26,920 --> 00:51:33,820 774 00:51:33,820 --> 00:51:35,496 Statisk overløb er meget awesome. 775 00:51:35,496 --> 00:51:44,930 776 00:51:44,930 --> 00:51:51,182 Og så har vi bare kalde self marioWithLevels værdi. 777 00:51:51,182 --> 00:51:54,550 778 00:51:54,550 --> 00:51:56,284 Lad os se, vil der faktisk arbejde eller ej. 779 00:51:56,284 --> 00:51:59,070 780 00:51:59,070 --> 00:52:01,550 >> Vi er allerede givet en pyramide. 781 00:52:01,550 --> 00:52:04,785 Lad os prøve at ændre højden. 782 00:52:04,785 --> 00:52:06,530 Der faktisk fungerer. 783 00:52:06,530 --> 00:52:07,610 Det er temmelig cool. 784 00:52:07,610 --> 00:52:10,420 Så nu kan du bare input enhver værdi, du ønsker. 785 00:52:10,420 --> 00:52:12,440 Lad os bare sige fire. 786 00:52:12,440 --> 00:52:14,260 Det er temmelig awesome. 787 00:52:14,260 --> 00:52:17,090 Så det er dybest set en virkelig hurtig eksempel 788 00:52:17,090 --> 00:52:23,170 for, hvordan du opretter et projekt i s-kode og hvordan man virkelig hurtigt wire op 789 00:52:23,170 --> 00:52:26,220 nogle virkelig simple arrangementer og funktioner. 790 00:52:26,220 --> 00:52:28,840 >> Så kilden går at blive sat online senere. 791 00:52:28,840 --> 00:52:33,400 Så hvis du er interesseret i hvordan iOS Mario fungerer, 792 00:52:33,400 --> 00:52:38,360 Jeg har tænkt mig at sætte præcis den samme projekter over på CS50 hjemmeside senere. 793 00:52:38,360 --> 00:52:41,260 Vi er dybest set færdig med sommer, og før vi afslutter 794 00:52:41,260 --> 00:52:45,190 Jeg vil blot påpege jer til nogle virkelig fantastiske ressourcer, 795 00:52:45,190 --> 00:52:47,550 er tilgængelige online. 796 00:52:47,550 --> 00:52:52,270 >> Naturligvis Apple dokumentation vil være meget nyttigt. 797 00:52:52,270 --> 00:52:57,630 Men ud over det, jeg især anbefaler fire kilder, kode skole, 798 00:52:57,630 --> 00:53:02,120 træ hus, AppCoda og WWDC videoer. 799 00:53:02,120 --> 00:53:07,270 Kode skole og træ hus er to online uddannelsesfaciliteter hjemmesider, 800 00:53:07,270 --> 00:53:10,210 som specifikt fokuserer på software engineering. 801 00:53:10,210 --> 00:53:16,930 Især for kode skole, har virkelig god tutorial på iOS. 802 00:53:16,930 --> 00:53:19,550 >> Det er en virkelig hurtig eksempel for det. 803 00:53:19,550 --> 00:53:22,980 De faktisk skabe en virkelig cute-- se på det lille søde iPhone 804 00:53:22,980 --> 00:53:24,920 fyr derovre, det er temmelig awesome. 805 00:53:24,920 --> 00:53:31,010 Og den måde, de forklarer Mål C syntaks er klart. 806 00:53:31,010 --> 00:53:32,230 Tree hus er det samme. 807 00:53:32,230 --> 00:53:34,660 Og AppCoda er et forum. 808 00:53:34,660 --> 00:53:38,130 Det er faktisk en blog, der blev kørt ved en virkelig oplevet Objective C 809 00:53:38,130 --> 00:53:39,120 programmør. 810 00:53:39,120 --> 00:53:43,950 Og alle de tutorials i AppCoda er temmelig kort og let at implementere, 811 00:53:43,950 --> 00:53:45,390 stærkt anbefales. 812 00:53:45,390 --> 00:53:47,700 >> Og hvis du er en udvikler, helt sikkert gå tjek 813 00:53:47,700 --> 00:53:55,660 hvordan WWDC videoer, hvor du kan lære om den nyeste iOS programmering 814 00:53:55,660 --> 00:53:58,250 teknikker, API'er og biblioteker. 815 00:53:58,250 --> 00:54:02,850 Så det er temmelig meget det til seminaret. 816 00:54:02,850 --> 00:54:03,820 Tak så meget. 817 00:54:03,820 --> 00:54:08,040 Og jeg håber du har det sjovt oprette din egen iOS app. 818 00:54:08,040 --> 00:54:09,302