1 00:00:00,000 --> 00:00:11,420 2 00:00:11,420 --> 00:00:13,590 >> Tianyu LIU: Hej, hur är det kommer alla? 3 00:00:13,590 --> 00:00:20,250 Och det här är iOS App programmering av objektiv c seminarium. 4 00:00:20,250 --> 00:00:21,520 Och mitt namn är Tianyu Liu. 5 00:00:21,520 --> 00:00:26,114 Jag är en Lowell junior just nu, koncentrera i datavetenskap. 6 00:00:26,114 --> 00:00:28,030 Så i detta seminarium är jag kommer att lära er 7 00:00:28,030 --> 00:00:30,770 lite om hur man gör en app. 8 00:00:30,770 --> 00:00:33,030 Yay, bli upphetsad för det. 9 00:00:33,030 --> 00:00:36,790 >> Så innan vi ens börjar dyka i själva programmeringssidan, 10 00:00:36,790 --> 00:00:41,840 låt oss bara riktigt snabbt tala om Varför kanske du vill bygga en iOS-app? 11 00:00:41,840 --> 00:00:43,940 Varför är iOS så häftigt? 12 00:00:43,940 --> 00:00:47,250 Så det första problemet, det första sak som är ganska häftigt för oss, 13 00:00:47,250 --> 00:00:51,190 särskilt som en CS50 student är att iOS 14 00:00:51,190 --> 00:00:55,860 använder Mål C. Tja, det finns ett nytt språk som kallas Swift, 15 00:00:55,860 --> 00:00:58,260 men vi kommer inte att använda det i detta seminarium. 16 00:00:58,260 --> 00:01:01,540 Om du är intresserad av Swift, där är en oberoende seminarium om det. 17 00:01:01,540 --> 00:01:05,590 Men Mål C är i grunden ett superset av C. Betydelse 18 00:01:05,590 --> 00:01:10,230 att allt du använder i C kan översättas till mål C 19 00:01:10,230 --> 00:01:11,630 mycket lätt. 20 00:01:11,630 --> 00:01:15,730 >> Som ni kanske ser senare, förvisso att finns det några mycket grundläggande syntax, är 21 00:01:15,730 --> 00:01:19,790 princip exakt samma, C och Objective C. Så, 22 00:01:19,790 --> 00:01:22,860 eftersom du har tagit CS50 upp så här långt, redan du 23 00:01:22,860 --> 00:01:26,500 vet Mål C, åtminstone 40%. 24 00:01:26,500 --> 00:01:30,720 Dessutom har Apple en riktigt robust API för iOS. 25 00:01:30,720 --> 00:01:33,750 Det finns en hel del riktigt galet saker du kan göra med det. 26 00:01:33,750 --> 00:01:36,760 Varav en är någon faktiskt skapat en iOS-app 27 00:01:36,760 --> 00:01:40,600 för styrning av bilar, som är ganska intressant. 28 00:01:40,600 --> 00:01:42,610 Förmodligen en helikopter är mer spännande. 29 00:01:42,610 --> 00:01:47,020 Men det är hur kraftfull iOS API kan vara. 30 00:01:47,020 --> 00:01:49,340 >> Och som ni kanske har listat ut just nu, 31 00:01:49,340 --> 00:01:53,000 stacken spill är förmodligen en av de viktigaste online-resurser 32 00:01:53,000 --> 00:01:54,250 tillgängliga för dig. 33 00:01:54,250 --> 00:01:58,090 Och goda nyheter, för varje enda problemet kan du eventuellt 34 00:01:58,090 --> 00:02:01,840 tänka på när du bygger din slutprojekt i Objective C, 35 00:02:01,840 --> 00:02:05,910 Det är sannolikt en stack overflow svar. 36 00:02:05,910 --> 00:02:07,420 Det är bara häftigt. 37 00:02:07,420 --> 00:02:12,780 I tillägg till detta, iOS är verkligen en plattform 38 00:02:12,780 --> 00:02:16,260 där du kan nå en enorm publiken med liten ansträngning. 39 00:02:16,260 --> 00:02:20,170 Det är inte som Android, där allt är ganska splittrad. 40 00:02:20,170 --> 00:02:22,540 >> Allt iOS är enhetlig. 41 00:02:22,540 --> 00:02:25,920 Och så länge du skapar en app för iPhone, 42 00:02:25,920 --> 00:02:31,260 kan du mycket enkelt port som till iPad, iPad mini eller olika iPhone storlekar. 43 00:02:31,260 --> 00:02:33,050 Dessa är alla riktigt bekvämt. 44 00:02:33,050 --> 00:02:36,430 Och det är bara riktigt bra för att imponera dina vänner. 45 00:02:36,430 --> 00:02:38,920 Du kan bara hålla en iPhone och berätta för din vän hey, 46 00:02:38,920 --> 00:02:40,250 Detta är den app jag gör. 47 00:02:40,250 --> 00:02:43,860 Du kan göra det för alla skrivbordsprogram, vilket är trevligt. 48 00:02:43,860 --> 00:02:48,870 >> Okej, nu ska vi faktiskt få till språket Objective C. 49 00:02:48,870 --> 00:02:52,910 Så varför ska vi inte börja med några riktigt grundläggande syntax. 50 00:02:52,910 --> 00:02:57,410 Som jag nämnde tidigare mål C Det är i grunden ett superset av C. 51 00:02:57,410 --> 00:03:01,860 Så en hel del grundläggande syntax är faktiskt exakt samma. 52 00:03:01,860 --> 00:03:06,150 Kan deklarera en variabel och addera två variabler tillsammans 53 00:03:06,150 --> 00:03:09,440 är precis som vi har gjort i Mario. 54 00:03:09,440 --> 00:03:11,140 Inget nytt här. 55 00:03:11,140 --> 00:03:17,370 >> Likaså hyresgästen för slingan och skick är också densamma. 56 00:03:17,370 --> 00:03:22,370 Du kan göra en for-loop precis som du har gjort i en Mario [OHÖRBAR]. 57 00:03:22,370 --> 00:03:26,280 Och du kan göra villkor precis som vad du 58 00:03:26,280 --> 00:03:29,240 har gjort i dina tidigare p-apparater. 59 00:03:29,240 --> 00:03:33,400 Men Mål C är inte fullständigt C, 60 00:03:33,400 --> 00:03:36,640 och det är något som är lite konstigt om det. 61 00:03:36,640 --> 00:03:42,340 >> Den första är att när du är gör C-programmering, oftast ringa dig 62 00:03:42,340 --> 00:03:46,310 innehålla och sedan ett bibliotek namn. 63 00:03:46,310 --> 00:03:49,860 Men i mål C du kallar det import. 64 00:03:49,860 --> 00:03:53,100 I grund och botten säger funktionalitet, bara olika namn. 65 00:03:53,100 --> 00:03:55,940 Och strängarna är faktiskt lite konstigt. 66 00:03:55,940 --> 00:03:58,250 Du kan se att den första sak som är lite konstigt 67 00:03:58,250 --> 00:04:04,190 är att du har en ganska weird-- sorry-- du har en ganska konstig NS 68 00:04:04,190 --> 00:04:04,960 logga hit. 69 00:04:04,960 --> 00:04:07,452 70 00:04:07,452 --> 00:04:09,160 Och den andra saken det är lite konstigt 71 00:04:09,160 --> 00:04:14,090 är att du har ett snabel före faktiskt förklara strängen. 72 00:04:14,090 --> 00:04:19,209 Så snabel princip innebär att en sträng är inte bara en sträng, 73 00:04:19,209 --> 00:04:20,880 det är faktiskt ett objekt. 74 00:04:20,880 --> 00:04:22,780 Vi kommer att förklara som senare så inte 75 00:04:22,780 --> 00:04:25,800 panik om du inte förstår vad det betyder. 76 00:04:25,800 --> 00:04:29,980 Och skriver ut till konsolen är lite annorlunda eftersom C vi kallar printf, 77 00:04:29,980 --> 00:04:33,350 men i mål C kallar vi [OHÖRBAR]. 78 00:04:33,350 --> 00:04:35,640 >> Du kanske undrar vad som är det. 79 00:04:35,640 --> 00:04:38,070 Det är i grunden printf, bara ett annat språk. 80 00:04:38,070 --> 00:04:41,370 Exakt samma användning, exakt samma funktionalitet. 81 00:04:41,370 --> 00:04:44,060 Jo det visar sig att Mål C faktiskt 82 00:04:44,060 --> 00:04:50,040 har en NS prefix i nästan allt, alla grundläggande datatyp, 83 00:04:50,040 --> 00:04:52,690 nsstring, nsarray, nsdictionary. 84 00:04:52,690 --> 00:04:56,340 Orsaken är att ns faktiskt står för Next Step, 85 00:04:56,340 --> 00:04:59,980 vilket är ett företag som Steve Jobs har grundat, 86 00:04:59,980 --> 00:05:03,960 som är ett företag där språket Objective C är född. 87 00:05:03,960 --> 00:05:06,140 Så detta är i grunden tradition. 88 00:05:06,140 --> 00:05:09,010 Jag vet att det är lite konstigt, men det är Apple. 89 00:05:09,010 --> 00:05:16,840 >> Så något som är ännu konstigare än det är en funktionsdeklaration. 90 00:05:16,840 --> 00:05:22,600 Detta är mycket annorlunda än vad vi se i C, för här det faktiskt 91 00:05:22,600 --> 00:05:25,190 ser inte ut som C längre. 92 00:05:25,190 --> 00:05:28,810 Vad har du här-- av sätt är detta inte en punktsats, 93 00:05:28,810 --> 00:05:30,690 Detta är ett minustecken. 94 00:05:30,690 --> 00:05:36,440 Du har ett minustecken parentes ogiltiga och därefter funktionsnamnet. 95 00:05:36,440 --> 00:05:38,450 Låt oss bara säga att vi har hallå världen, sedan 96 00:05:38,450 --> 00:05:42,820 returtypen skulle vara ogiltigt eftersom vi tillbaka någonting. 97 00:05:42,820 --> 00:05:44,680 >> Vad blir jättekonstigt är att när du är 98 00:05:44,680 --> 00:05:49,580 som har mer än en parameter passerar in i en samma funktion som 99 00:05:49,580 --> 00:05:53,870 kommer att bli riktigt konstigt som visas här. 100 00:05:53,870 --> 00:05:58,230 Vi har ett metodnamn, kallas addInt till [OHÖRBAR] 101 00:05:58,230 --> 00:06:00,370 och vi passerar en parameter. 102 00:06:00,370 --> 00:06:05,170 Men efter det har vi mer metodnamn samtal med. 103 00:06:05,170 --> 00:06:08,500 Och efter med vi passerar den andra parametern. 104 00:06:08,500 --> 00:06:11,940 Detta är faktiskt lite konstigt, men alla dessa funktionsdeklarationer 105 00:06:11,940 --> 00:06:14,770 följa samma mönster som denna. 106 00:06:14,770 --> 00:06:17,450 >> Vi har ett minustecken för att börja med. 107 00:06:17,450 --> 00:06:21,550 Minustecknet kan vara ett plustecken ibland baserat på vilken typ av metod 108 00:06:21,550 --> 00:06:22,340 är det. 109 00:06:22,340 --> 00:06:25,000 Metod är i grunden ett annat namn för funktionen. 110 00:06:25,000 --> 00:06:26,760 Och vi kommer att förklara att senare när 111 00:06:26,760 --> 00:06:30,580 vi pratar om objektet orienterad programmering. 112 00:06:30,580 --> 00:06:34,300 Du anger först avkastningen typ inne parenteser, 113 00:06:34,300 --> 00:06:37,450 efter vilket kommer metodnamnet. 114 00:06:37,450 --> 00:06:40,310 Du passerar en parameter. 115 00:06:40,310 --> 00:06:44,750 Och om du har fler parametrar du behöver förlänga metodnamn 116 00:06:44,750 --> 00:06:46,770 och i princip skriva något mer här. 117 00:06:46,770 --> 00:06:48,090 >> Det kan vara vad du vill. 118 00:06:48,090 --> 00:06:50,140 I vårt fall är det med. 119 00:06:50,140 --> 00:06:56,160 Men man kan säga slutet, eller eller eller abc full bar, vad du vill. 120 00:06:56,160 --> 00:06:59,500 Och sedan efter att du är passerar parameter b. 121 00:06:59,500 --> 00:07:01,750 Detta är en riktigt konstig konvention men vi är 122 00:07:01,750 --> 00:07:05,800 kommer att se varför Apple ville att göra det mycket snabbt. 123 00:07:05,800 --> 00:07:10,530 Så hur du ringer funktionen? 124 00:07:10,530 --> 00:07:15,520 Ringa en funktion i mål C är också skild från C. 125 00:07:15,520 --> 00:07:18,170 >> Egentligen kräver en funktion i mål C 126 00:07:18,170 --> 00:07:21,030 är mer som om du pratar med någon. 127 00:07:21,030 --> 00:07:27,030 Här har vi själv, vilket kallas ett objekt. 128 00:07:27,030 --> 00:07:33,830 Du i princip berättar invända själv att säga "Hello World!" 129 00:07:33,830 --> 00:07:36,830 Det är så att anropa funktionen. 130 00:07:36,830 --> 00:07:41,690 Ett föremål och ett metodnamn kombineras med varandra. 131 00:07:41,690 --> 00:07:49,600 Och det är där konstiga förlängning för metodnamn verkligen kommer in i bilden. 132 00:07:49,600 --> 00:07:52,150 >> Låt oss titta på det andra exemplet. 133 00:07:52,150 --> 00:07:56,780 Vi definierade bara en metod som kallas addInt med bla bla bla. 134 00:07:56,780 --> 00:08:00,066 Så i det här fallet när du ringer att specifik [? meddelande?] det kommer 135 00:08:00,066 --> 00:08:02,035 att se ut som själv addInt: 10 med: 2. 136 00:08:02,035 --> 00:08:05,410 137 00:08:05,410 --> 00:08:08,070 Det låter som engelska. 138 00:08:08,070 --> 00:08:11,980 Även om funktionen funktionsdeklarationen är konstigt, 139 00:08:11,980 --> 00:08:15,600 punkten för mål C: s metoddeklaration mönster, 140 00:08:15,600 --> 00:08:18,830 är att när du ringer den funktion eller metod 141 00:08:18,830 --> 00:08:21,980 det kommer att låta som verkliga engelska. 142 00:08:21,980 --> 00:08:25,270 Så det är väldigt intuitivt när du får in den. 143 00:08:25,270 --> 00:08:28,740 >> Särskilt i det här fallet, där man kan i princip 144 00:08:28,740 --> 00:08:33,010 se att funktionen heter sorts dokumentera självt. 145 00:08:33,010 --> 00:08:35,390 Du behöver inte någon mer förklaring för att se 146 00:08:35,390 --> 00:08:42,770 exakt vad som händer, vad exakt en parameter gör. 147 00:08:42,770 --> 00:08:48,470 Att gå längre än så, låt oss prata lite lite om objektorienterad programmering. 148 00:08:48,470 --> 00:08:52,160 Objektorienterad programmering är en av de grundläggande programmering 149 00:08:52,160 --> 00:08:57,110 tekniker eller mönster som är används av mål C. Mål C 150 00:08:57,110 --> 00:09:03,110 kallas Mål C, inte C, för en riktigt bra anledning. 151 00:09:03,110 --> 00:09:07,560 >> Så innan vi kommer in Mål C syntax, 152 00:09:07,560 --> 00:09:11,670 Låt oss verkligen snabbt titta på vad exakt är ett objekt. 153 00:09:11,670 --> 00:09:15,480 Vi har förmodligen gjort något liknande objekt innan, vilket 154 00:09:15,480 --> 00:09:19,780 kallas struct när du är genomföra ett träd eller en länkad lista 155 00:09:19,780 --> 00:09:25,730 eller [? prova. ?] Så det är i princip som en struct, 156 00:09:25,730 --> 00:09:28,560 men det är mycket mer kraftfull än så. 157 00:09:28,560 --> 00:09:33,150 Ett objekt har metoder och egenskaper. 158 00:09:33,150 --> 00:09:35,310 Metoder är i grunden funktioner. 159 00:09:35,310 --> 00:09:39,480 Fungerar i princip att en specifik för ett visst objekt. 160 00:09:39,480 --> 00:09:45,440 >> Och fastigheter är i stort sett fält som du anger i struct. 161 00:09:45,440 --> 00:09:48,500 Så för varje enskilt objekt vi har viss egendom 162 00:09:48,500 --> 00:09:53,160 som har vissa variabler som är specifika för objektet. 163 00:09:53,160 --> 00:09:57,170 Och vi har en del funktioner som är också specifika för objektet. 164 00:09:57,170 --> 00:10:01,180 Och funktionerna kallas metoder och variablerna kallas egenskaper. 165 00:10:01,180 --> 00:10:03,190 Det är bara ett fantasinamn. 166 00:10:03,190 --> 00:10:10,440 Medan du faktiskt varenda vy du ser när du öppnar en iOS-app, 167 00:10:10,440 --> 00:10:17,720 låt oss bara säga Twitter eller Facebook, varenda vy du ser är ett objekt. 168 00:10:17,720 --> 00:10:22,110 Och även hela app är ett föremål till att börja med. 169 00:10:22,110 --> 00:10:25,340 Mycket intressant koncept. 170 00:10:25,340 --> 00:10:28,480 >> Och varför vill vi objektet orienterad programmering? 171 00:10:28,480 --> 00:10:33,530 Så du kan tänka dig att när du program det blir ganska komplicerat. 172 00:10:33,530 --> 00:10:36,400 Låt oss bara säga när du är genomföra schackbräde, 173 00:10:36,400 --> 00:10:40,020 logiken kommer att vara mycket komplicerat. 174 00:10:40,020 --> 00:10:43,280 Du har 36 olika bitar, så att om man 175 00:10:43,280 --> 00:10:48,370 vill skriva logik för alla 36 olika bitar i schack, 176 00:10:48,370 --> 00:10:52,150 det kommer att bli en hel del olika funktioner och variabler. 177 00:10:52,150 --> 00:10:54,070 Det är en massa problem. 178 00:10:54,070 --> 00:10:58,980 Och förmodligen du ska skriva ett annan metod eller annan funktion 179 00:10:58,980 --> 00:11:03,950 för varje bit för att exakt kontrollera vad de gör. 180 00:11:03,950 --> 00:11:08,830 >> Men om du gör objektorienterad programmering, alla dessa bitar 181 00:11:08,830 --> 00:11:12,440 kan abstraheras in ett enda objekt. 182 00:11:12,440 --> 00:11:16,111 Och föremålet kommer att ha några vanliga egenskaper, såsom vilken typ av pjäs 183 00:11:16,111 --> 00:11:16,610 är det? 184 00:11:16,610 --> 00:11:17,740 Vilken färg är det? 185 00:11:17,740 --> 00:11:19,480 Hur kan det röra sig? 186 00:11:19,480 --> 00:11:24,660 Och på det sättet du har kraftigt förenklat logiken av den. 187 00:11:24,660 --> 00:11:28,480 Så det är bara ett riktigt bra sätt att göra komplicerade program, 188 00:11:28,480 --> 00:11:33,700 och hierarkiska relationer inom programmet, mycket enkelt. 189 00:11:33,700 --> 00:11:36,800 Som vi kommer att se varför mycket snabbt när 190 00:11:36,800 --> 00:11:39,660 vi faktiskt gör programming-- när vi är faktiskt 191 00:11:39,660 --> 00:11:42,830 gör en S-kod programmering session senare. 192 00:11:42,830 --> 00:11:48,120 >> Väl i tillägg till detta, objektorienterad programmering 193 00:11:48,120 --> 00:11:50,030 är bara mycket roligt. 194 00:11:50,030 --> 00:11:51,990 Du fick att designa din egen objektet. 195 00:11:51,990 --> 00:11:56,080 Du måste utforma vad gör det ser ut som själv. 196 00:11:56,080 --> 00:11:58,250 Det finns inget rätt svar på det. 197 00:11:58,250 --> 00:12:02,940 Och det är helt intressant. 198 00:12:02,940 --> 00:12:07,270 Så i objektorienterad programmering, två grundläggande begrepp 199 00:12:07,270 --> 00:12:10,130 blir klass och instans. 200 00:12:10,130 --> 00:12:13,570 En klass är i grunden en mall för objektet. 201 00:12:13,570 --> 00:12:18,070 Och ett exempel är i grunden ett specifikt objekt. 202 00:12:18,070 --> 00:12:21,090 >> Låt oss bara säga att du gör en cookie. 203 00:12:21,090 --> 00:12:24,800 I det här fallet, varenda cookien du faktiskt sluta med 204 00:12:24,800 --> 00:12:27,310 kommer att bli ett föremål. 205 00:12:27,310 --> 00:12:35,830 Men cookie plattan som du använder för att baka alla cookies kommer att vara en klass. 206 00:12:35,830 --> 00:12:37,880 En klass är i grunden en mall. 207 00:12:37,880 --> 00:12:46,170 Och instansen kommer att vara en specifik objekt som skapats av den klassen. 208 00:12:46,170 --> 00:12:49,970 >> Och en instans skapas baserad på klassdeklarationen, 209 00:12:49,970 --> 00:12:56,760 som vi kommer att se i senare diabilder. 210 00:12:56,760 --> 00:13:00,010 Så låt oss faktiskt göra ett riktigt snabbt exempel [OHÖRBAR]. 211 00:13:00,010 --> 00:13:04,280 Låt oss säga att vi förklara ett föremål för en katt. 212 00:13:04,280 --> 00:13:07,930 Objektet bör have-- katten klassen bör 213 00:13:07,930 --> 00:13:11,260 har vissa egenskaper och metoder. 214 00:13:11,260 --> 00:13:17,300 Vilken typ av egenskaper bör de klass have-- ska katten ha? 215 00:13:17,300 --> 00:13:20,580 >> Till exempel, färg, ålder och ras, de som 216 00:13:20,580 --> 00:13:24,440 kommer att vara variabler som är specifika för varje katt. 217 00:13:24,440 --> 00:13:27,790 Och de är några saker som vi använder för att beskriva en katt. 218 00:13:27,790 --> 00:13:31,880 Vilken typ av metod, eller vad kan en katt göra? 219 00:13:31,880 --> 00:13:37,160 Några snabba exempel skulle vara chase mus, äta fisk eller bara jamar. 220 00:13:37,160 --> 00:13:40,900 Detta är en riktigt snabb exempel på katt klass. 221 00:13:40,900 --> 00:13:46,920 Och ett riktigt specifik kattobjekt kommer att vara en katt 222 00:13:46,920 --> 00:13:50,930 där vi anger färg, ålder och ras. 223 00:13:50,930 --> 00:13:53,790 >> I det fallet, är vårt objekt inte längre en klass längre. 224 00:13:53,790 --> 00:14:00,010 Vi kopierar mallen från klassen och vi specificera varje specifik information 225 00:14:00,010 --> 00:14:04,510 till det specifika objektet att göra det oberoende. 226 00:14:04,510 --> 00:14:09,350 Och när du ringer en metod i ett objekt, 227 00:14:09,350 --> 00:14:16,640 du bara ringa mjau på objektet, vilket är katten som du just skapade. 228 00:14:16,640 --> 00:14:19,020 >> Förmodligen kommer du att skriva ut något som "Hello World! 229 00:14:19,020 --> 00:14:20,000 Meow. " 230 00:14:20,000 --> 00:14:22,110 Ganska söt. 231 00:14:22,110 --> 00:14:24,500 Okej, låt oss bara komma in i några detaljer 232 00:14:24,500 --> 00:14:30,650 och se vad exakt gör att översätta till att iOS-programmering. 233 00:14:30,650 --> 00:14:36,500 Så i iOS programmering varenda klass kommer att genomföras i två filer. 234 00:14:36,500 --> 00:14:41,420 En fil är här, vilket kallas gränssnittet. 235 00:14:41,420 --> 00:14:45,300 En annan fil är här, vilket kallas genomförande. 236 00:14:45,300 --> 00:14:48,890 >> Typiskt gränssnittet kommer att ha extension.h 237 00:14:48,890 --> 00:14:51,740 som vi har sett i C-bibliotek. 238 00:14:51,740 --> 00:14:56,340 Och genomförande filen är kommer att ha extension.n. 239 00:14:56,340 --> 00:14:57,260 Det är lite konstigt. 240 00:14:57,260 --> 00:15:01,270 Men .N betyder faktiskt .c, det finns ingen grundläggande skillnad mellan dem 241 00:15:01,270 --> 00:15:02,100 två. 242 00:15:02,100 --> 00:15:06,650 Så i det här fallet, kan vi se att vi är förklara gränssnitt, Cat: objektet. 243 00:15:06,650 --> 00:15:10,660 244 00:15:10,660 --> 00:15:13,760 Det kallas arv. 245 00:15:13,760 --> 00:15:19,170 Vi är i princip ärva katt klass från objektklassen. 246 00:15:19,170 --> 00:15:24,790 Så varje egendom och metod som var tidigare definierad i objektklass 247 00:15:24,790 --> 00:15:28,560 kommer automatiskt att definieras i en katt klass samt. 248 00:15:28,560 --> 00:15:35,900 >> Utöver detta, definierar vi färg, ras och ålder, tre variabler. 249 00:15:35,900 --> 00:15:39,360 Det ser faktiskt ut som något du har gjort tidigare. 250 00:15:39,360 --> 00:15:41,770 Det ser ut som struct. 251 00:15:41,770 --> 00:15:44,950 Det är i grunden syntaxen för struct deklaration, 252 00:15:44,950 --> 00:15:47,710 och det är helt korrekt. 253 00:15:47,710 --> 00:15:51,825 Och eftersom jag nämnde tidigare, skillnaden en struct 254 00:15:51,825 --> 00:15:53,960 och ett föremål, en av de grundläggande skillnader 255 00:15:53,960 --> 00:15:59,080 är att ett objekt har metoden, medan en struct har endast variabler. 256 00:15:59,080 --> 00:16:03,450 Så förutom de fastigheter eller variabler som vi har skapat för objektet, 257 00:16:03,450 --> 00:16:05,700 vi anger någon metod. 258 00:16:05,700 --> 00:16:09,720 >> Låt oss bara säga här har vi två metoder, en är mjau, 259 00:16:09,720 --> 00:16:12,460 en annan är jakten mus. 260 00:16:12,460 --> 00:16:18,600 Vi vill nog vara passerar en parameter utifrån vår tidigare metod 261 00:16:18,600 --> 00:16:20,440 deklaration mönster. 262 00:16:20,440 --> 00:16:22,160 Du vill antagligen vara passerar en mus. 263 00:16:22,160 --> 00:16:25,180 Och du kommer förmodligen vill att returnera en bool betecknar 264 00:16:25,180 --> 00:16:30,010 Om din katt har framgångsrikt fångade musen eller inte. 265 00:16:30,010 --> 00:16:33,170 >> Detta är gränssnittet, men vi kan se att gränssnittet faktiskt 266 00:16:33,170 --> 00:16:35,150 inte göra någonting. 267 00:16:35,150 --> 00:16:40,800 Den berättar bara ett program vad exists-- vad som finns i katt klassen. 268 00:16:40,800 --> 00:16:43,640 Så för att den program för att göra något, 269 00:16:43,640 --> 00:16:46,680 vi behöver ha implementeringsfiler. 270 00:16:46,680 --> 00:16:51,940 Så här är det första vi gör uppenbar vi importerar gränssnittet. 271 00:16:51,940 --> 00:16:56,470 Efter att vi importerar gränssnittet, vi definierar metoden. 272 00:16:56,470 --> 00:17:00,150 >> Låt oss bara säga här mjau skulle bara skriva ut 273 00:17:00,150 --> 00:17:01,740 "Hello World!" till konsolen. 274 00:17:01,740 --> 00:17:04,319 275 00:17:04,319 --> 00:17:08,460 Och efter genomförandet fil, vi ganska mycket gjort. 276 00:17:08,460 --> 00:17:14,530 Detta är i grunden en klass deklaration för en klass. 277 00:17:14,530 --> 00:17:19,970 Så nu är frågan blir, hur gör du deklarerar en variabel? 278 00:17:19,970 --> 00:17:26,880 Sättet du använder en klass för att skapa en objekt i mål C har skrivits här. 279 00:17:26,880 --> 00:17:30,730 >> Du först ange att detta är en katt pekare, 280 00:17:30,730 --> 00:17:38,700 eftersom varje objekt i mål C slutligen implementeras som en pekare. 281 00:17:38,700 --> 00:17:46,210 Och du kallar klassen, kalla dem som Alloc, vilket egentligen malloc, 282 00:17:46,210 --> 00:17:51,220 berätta vilket operativsystem du behöver lite minnesutrymme för det här objektet. 283 00:17:51,220 --> 00:17:55,780 Efter att du har ett objekt redan och du bara initiera den. 284 00:17:55,780 --> 00:17:56,780 Detta är bara konvention. 285 00:17:56,780 --> 00:17:59,390 286 00:17:59,390 --> 00:18:04,410 Jag vet att det är är lite konstigt, men detta är faktiskt hur Apple gör saker. 287 00:18:04,410 --> 00:18:07,130 >> Tilldela fastigheter faktiskt ganska enkelt. 288 00:18:07,130 --> 00:18:09,250 Det är mycket lik vad du gör när 289 00:18:09,250 --> 00:18:13,780 du tilldela vissa specifika fält inuti struct. 290 00:18:13,780 --> 00:18:16,830 Du måste bara variabeln namn, fastighetsnamnet, 291 00:18:16,830 --> 00:18:20,140 och tilldela ett specifikt värde till den. 292 00:18:20,140 --> 00:18:24,120 Och anropa en metod är mycket lika. 293 00:18:24,120 --> 00:18:29,080 Den anropar en metod är i princip vad jag pratar om 294 00:18:29,080 --> 00:18:32,390 för att ringa någon metod i mål C. 295 00:18:32,390 --> 00:18:36,660 >> Du passerar ett objekt, i detta fall det kommer att bli myCat, 296 00:18:36,660 --> 00:18:42,490 och du passerar metodnamnet. 297 00:18:42,490 --> 00:18:47,130 Som om du pratar med objektet, myCat, som du bör jamar. 298 00:18:47,130 --> 00:18:48,570 Det är ganska intressant. 299 00:18:48,570 --> 00:18:52,010 300 00:18:52,010 --> 00:18:55,680 Efter detta finns det en viktigare design mönster 301 00:18:55,680 --> 00:18:59,940 att vi måste prata om innan du hämtar till verkliga S-kod. 302 00:18:59,940 --> 00:19:03,300 Denna design mönster kallas händelsestyrd programmering. 303 00:19:03,300 --> 00:19:09,660 Detta är också förmodligen en av de mest grundläggande idéerna i iOS programmering. 304 00:19:09,660 --> 00:19:14,410 >> Så du antagligen inte vet vad exakt är händelsestyrd programmering, 305 00:19:14,410 --> 00:19:16,990 men det är inte riktigt så skrämmande. 306 00:19:16,990 --> 00:19:20,400 Jo faktiskt, har du redan gjort det förut. 307 00:19:20,400 --> 00:19:24,894 Detta är en av de linjer som du har förmodligen redan skrivit i den sista [OHÖRBAR] 308 00:19:24,894 --> 00:19:26,810 av CS50, google.maps.event.addListener (markör, 309 00:19:26,810 --> 00:19:27,810 "Klick", function () {}) :. 310 00:19:27,810 --> 00:19:32,410 311 00:19:32,410 --> 00:19:37,620 Genom att ringa denna linje är du huvudsak träffande datorn 312 00:19:37,620 --> 00:19:42,650 att när händelsen kallas "Klicka" händer på markör, 313 00:19:42,650 --> 00:19:43,630 Använd denna funktion. 314 00:19:43,630 --> 00:19:46,910 315 00:19:46,910 --> 00:19:50,950 >> Detta skiljer sig mycket från vad du gör i mario.c. 316 00:19:50,950 --> 00:19:56,670 I mario.c du bara kör programmet gång, det ger dig en utgång, 317 00:19:56,670 --> 00:19:58,590 och du är klar. 318 00:19:58,590 --> 00:20:02,590 Dessa är ungefär som One Shot program. 319 00:20:02,590 --> 00:20:05,830 Händelsestyrda program är väldigt, väldigt annorlunda. 320 00:20:05,830 --> 00:20:10,230 Låt oss föreställa oss, om Facebook är en en shot program är det inte riktigt bra. 321 00:20:10,230 --> 00:20:13,750 Du går bara till Facebook en gång och det är gjort. 322 00:20:13,750 --> 00:20:16,700 Det ger dig några utdata och du fick aldrig tillbaka den. 323 00:20:16,700 --> 00:20:19,380 Du fick aldrig något mer. 324 00:20:19,380 --> 00:20:23,880 >> Så här, särskilt mönstret vi använder är 325 00:20:23,880 --> 00:20:26,940 händelsedriven, så att varje funktion kommer 326 00:20:26,940 --> 00:20:31,480 fångas baserat på vad händelse har hänt. 327 00:20:31,480 --> 00:20:34,670 Till exempel, om vi har en knapp och vi anger 328 00:20:34,670 --> 00:20:39,870 att när den knappen klickas, anropa funktionen heter "Hello World!" 329 00:20:39,870 --> 00:20:47,810 På så sätt kan vi verkligen hantera funktionskretsen 330 00:20:47,810 --> 00:20:50,560 strömma i en mycket flexibelt sätt. 331 00:20:50,560 --> 00:20:55,840 Användaren kan göra eller ring en funktion som redan kallats. 332 00:20:55,840 --> 00:20:59,900 Den är helt baserat på vad användarna gör. 333 00:20:59,900 --> 00:21:04,080 >> Så vi kan se att detta är faktiskt mycket bättre än mario.c. 334 00:21:04,080 --> 00:21:07,190 Och goda nyheten är att det är faktiskt inte ett nytt koncept. 335 00:21:07,190 --> 00:21:12,140 Ni har redan gjort att i det sista problemet inställd. 336 00:21:12,140 --> 00:21:16,640 Så i mål C finns tre olika diagram 337 00:21:16,640 --> 00:21:19,030 för händelsestyrd programmering. 338 00:21:19,030 --> 00:21:21,970 Det första diagrammet är kallad mål handling, 339 00:21:21,970 --> 00:21:26,990 där du binda en knapp tryck med någon funktion. 340 00:21:26,990 --> 00:21:31,590 Låt oss bara säga, när du klickar på vissa knapp, du kallar någon funktion. 341 00:21:31,590 --> 00:21:33,620 Detta är mycket enkelt mål åtgärd. 342 00:21:33,620 --> 00:21:35,580 >> Den andra är faktiskt den svåraste, 343 00:21:35,580 --> 00:21:38,450 det kallas delegationen om protokollet. 344 00:21:38,450 --> 00:21:41,800 Vi kommer att förklara att i detalj senare. 345 00:21:41,800 --> 00:21:44,420 Och den tredje vägen är anmälan. 346 00:21:44,420 --> 00:21:46,770 Detta är faktiskt inte mycket viktigt så långt 347 00:21:46,770 --> 00:21:50,920 vi är berörda, eftersom chansen att du kommer att använda anmälan 348 00:21:50,920 --> 00:21:53,310 i ditt slutprojekt är ganska låg. 349 00:21:53,310 --> 00:21:56,440 Så vi kommer att hoppa över den delen. 350 00:21:56,440 --> 00:21:59,460 >> Och vi kommer att dyka i delegationen protokollet. 351 00:21:59,460 --> 00:22:02,380 352 00:22:02,380 --> 00:22:04,470 Så vad exakt är ett protokoll? 353 00:22:04,470 --> 00:22:06,450 Eller vad är egentligen en delegation? 354 00:22:06,450 --> 00:22:09,670 Låt oss tala om protokoll till att börja med. 355 00:22:09,670 --> 00:22:13,360 Protokoll är ingenting annat än händelser. 356 00:22:13,360 --> 00:22:19,230 Men dessa händelser ges till du av Apple att börja med. 357 00:22:19,230 --> 00:22:22,640 Till exempel, jag är inte helt säker på hur många av er 358 00:22:22,640 --> 00:22:27,930 killar använder Apples original App post eller kontakt, 359 00:22:27,930 --> 00:22:32,180 men varje gång du rulla tabell och tryck på specifika cell 360 00:22:32,180 --> 00:22:36,130 på bordet, är att en händelse. 361 00:22:36,130 --> 00:22:38,330 >> Och om du vill göra händelsen själv, 362 00:22:38,330 --> 00:22:40,410 det är faktiskt lite svårt. 363 00:22:40,410 --> 00:22:44,880 Så Apple har med tanke på att även för dig så att du bara direkt kan använda 364 00:22:44,880 --> 00:22:49,610 händelsen att göra något på egen hand. 365 00:22:49,610 --> 00:22:52,980 Protokoll är faktiskt riktigt, riktigt stor utsträckning används 366 00:22:52,980 --> 00:22:58,320 i mål C. Väl i Faktum är att varje enskild app 367 00:22:58,320 --> 00:23:00,870 har något fångade app delegat. 368 00:23:00,870 --> 00:23:06,330 Inuti känslig är alla protokoll för lastning appen. 369 00:23:06,330 --> 00:23:12,470 >> Låt oss bara säga att det är en händelse för app gjorde belastning. 370 00:23:12,470 --> 00:23:18,200 Så vad ska hända efter att du har skapat en app, när du öppnar appen, 371 00:23:18,200 --> 00:23:22,630 när du stänger app, eller efter du sätter iPhone för att sova. 372 00:23:22,630 --> 00:23:27,480 Dessa är alla händelser som har redan givits till dig. 373 00:23:27,480 --> 00:23:34,730 Och ursprungligen inuti dessa partiklar blir det ingen genomförande. 374 00:23:34,730 --> 00:23:39,750 Apple sa ju att denna funktion kommer att hända när någon händelse inträffar, 375 00:23:39,750 --> 00:23:44,380 men vad du gör med det Funktionen är helt upp till dig. 376 00:23:44,380 --> 00:23:49,290 >> Delegationen är i grunden träffande klassen 377 00:23:49,290 --> 00:23:53,060 att du ska hantera dessa protokoll. 378 00:23:53,060 --> 00:23:55,340 Det är lite förvirrande, men det kommer att bli 379 00:23:55,340 --> 00:23:59,380 mycket tydligare när vi gör S-koder i aktion. 380 00:23:59,380 --> 00:24:04,760 Delegationen för protokollet är faktiskt en mycket robust mekanism i den meningen 381 00:24:04,760 --> 00:24:08,160 att om vi gör delegering till en viss klass, 382 00:24:08,160 --> 00:24:12,400 Vi kan i huvudsak hantera alla typer av evenemang 383 00:24:12,400 --> 00:24:17,040 använder någon klass vi har, mycket praktiskt verktyg. 384 00:24:17,040 --> 00:24:21,530 >> Så en snabbt exempel för delegationen om protokoll 385 00:24:21,530 --> 00:24:24,120 kommer att vara vad jag just pratade om. 386 00:24:24,120 --> 00:24:26,720 387 00:24:26,720 --> 00:24:30,890 Detta protokoll specifikt kallas Tableview [OHÖRBAR] väljer roll 388 00:24:30,890 --> 00:24:35,480 på [? index?] [? förflutna. ?] Så detta en händelse som skulle fångas när du 389 00:24:35,480 --> 00:24:39,710 faktiskt peka på en specifik cell i din Tableview, 390 00:24:39,710 --> 00:24:43,570 låt oss bara säga i din e-post eller i din kontaktlista app. 391 00:24:43,570 --> 00:24:48,180 >> Inuti en funktion fanns ursprungligen att göra ingenting. 392 00:24:48,180 --> 00:24:51,950 Funktionen inte göra något som standard. 393 00:24:51,950 --> 00:24:55,540 Men du kan ange vad funktionen gör, 394 00:24:55,540 --> 00:24:59,610 med tanke på vad du vill ha ut av din app. 395 00:24:59,610 --> 00:25:01,610 Mycket praktiskt verktyg. 396 00:25:01,610 --> 00:25:06,840 Och med allt detta sagt, jag i princip 397 00:25:06,840 --> 00:25:11,430 täcka en del mycket grundläggande syntax och grundläggande koncept för mål C 398 00:25:11,430 --> 00:25:15,860 programmering, och vi kan göra lite s kod. 399 00:25:15,860 --> 00:25:17,980 Mycket mer spännande. 400 00:25:17,980 --> 00:25:21,070 Så s kod är faktiskt en lite överväldigande 401 00:25:21,070 --> 00:25:23,330 när du öppnar det för första gången. 402 00:25:23,330 --> 00:25:26,640 >> En snabb anteckning, så om du vill göra iOS utveckling, 403 00:25:26,640 --> 00:25:29,630 Jag rekommenderar starkt att du har en Mac. 404 00:25:29,630 --> 00:25:33,930 Eftersom att göra iOS utveckling Windows är riktigt, riktigt hårt. 405 00:25:33,930 --> 00:25:37,560 Det är genomförbart, men det är verkligen svårt. 406 00:25:37,560 --> 00:25:40,610 Och du definitivt göra inte vill använda g redigera. 407 00:25:40,610 --> 00:25:47,950 Så i s-kod vi har flera olika områden. 408 00:25:47,950 --> 00:25:53,050 När du först öppnar s kod kommer du att se ett navigeringsområdet, 409 00:25:53,050 --> 00:25:57,470 som i princip visar alla filer som är i det aktuella projektet. 410 00:25:57,470 --> 00:26:03,590 >> Du har ett verktygsfält område, vilket är i grunden hantera vyer, 411 00:26:03,590 --> 00:26:08,570 eller någon liten snabb verktyg om s själva koden. 412 00:26:08,570 --> 00:26:11,140 Och detta är den verkliga redaktör området. 413 00:26:11,140 --> 00:26:15,900 Detta område är mycket lik g redigera, men mycket bättre än g redigera. 414 00:26:15,900 --> 00:26:21,150 Och i denna rätt område, är kallas tvättstuga. 415 00:26:21,150 --> 00:26:27,170 Området blir verkligen praktiskt när du skapar gränssnitt eller specificera 416 00:26:27,170 --> 00:26:30,070 några snabba inställningar för din app. 417 00:26:30,070 --> 00:26:34,570 >> Och det sista området är felsökning. 418 00:26:34,570 --> 00:26:37,970 Området innehåller konsolen. 419 00:26:37,970 --> 00:26:43,170 Så när du säger printf, eller nslog i vårt fall, 420 00:26:43,170 --> 00:26:47,330 alla dina resultat är kommer att skrivas här. 421 00:26:47,330 --> 00:26:48,260 Okej? 422 00:26:48,260 --> 00:26:52,090 Jag antar att vi kan verkligen snabbt göra ett exempel för iOS programmering. 423 00:26:52,090 --> 00:26:54,220 Och låt oss faktiskt öppna upp er kod. 424 00:26:54,220 --> 00:26:57,210 425 00:26:57,210 --> 00:27:01,346 Så varje gång du öppnar upp s kod, är det kommer att visa upp något liknande. 426 00:27:01,346 --> 00:27:03,220 Det kommer att fråga dig vad vill du göra? 427 00:27:03,220 --> 00:27:06,830 Vill du starta något slumpmässigt, en lekplats, i princip du 428 00:27:06,830 --> 00:27:11,250 kan bara testa kod utan faktiskt bestämmer sig för någon app. 429 00:27:11,250 --> 00:27:13,020 >> Vill du skapa ett nytt projekt? 430 00:27:13,020 --> 00:27:16,660 Eller vill du fortsätta arbetar på den befintliga projekt? 431 00:27:16,660 --> 00:27:20,270 I vårt fall ska vi att skapa ett nytt projekt. 432 00:27:20,270 --> 00:27:22,980 Så det är verkligen trevligt, s kod har faktiskt redan 433 00:27:22,980 --> 00:27:26,820 gett dig några mallar för att skapa objekt. 434 00:27:26,820 --> 00:27:32,680 Om du vill göra ett spel, s kod har faktiskt ett spel mall för dig, 435 00:27:32,680 --> 00:27:36,890 har sidan baserade applikationer, Fliken baserad applikation. 436 00:27:36,890 --> 00:27:39,280 I det här fallet kommer vi att göra något mycket enkelt, 437 00:27:39,280 --> 00:27:43,230 och vi kommer att använda en enda vy ansökan. 438 00:27:43,230 --> 00:27:48,270 >> Efter det precis vad du vill kalla din produkt, och vad heter du, 439 00:27:48,270 --> 00:27:52,760 vad är din identifierare, och vilket språk ni använder. 440 00:27:52,760 --> 00:27:57,060 Här vill vi inte att Kontrollera med hjälp av grundläggande data. 441 00:27:57,060 --> 00:28:00,170 Kärna Data är i grunden en databasing iOS. 442 00:28:00,170 --> 00:28:05,360 Om du gör Kärna Data, s kod kommer att definiera 443 00:28:05,360 --> 00:28:07,710 mycket mer komplicerat klasser för dig. 444 00:28:07,710 --> 00:28:12,740 Så för att hålla allt enkelt, vi är bara kommer att göra utan Kärna Data 445 00:28:12,740 --> 00:28:15,290 just nu. 446 00:28:15,290 --> 00:28:18,030 >> Problemet vi ska vara använder är that-- problemet 447 00:28:18,030 --> 00:28:23,770 vi kommer att vara att skapa är att vi princip vill importera Mario från C 448 00:28:23,770 --> 00:28:25,437 till en iOS app. 449 00:28:25,437 --> 00:28:26,645 Så låt oss kalla det Mario-iOS. 450 00:28:26,645 --> 00:28:31,230 451 00:28:31,230 --> 00:28:34,880 Naturligtvis kan du ange vad du vill sätta i ditt projekt. 452 00:28:34,880 --> 00:28:37,870 Och där går vi. 453 00:28:37,870 --> 00:28:41,390 >> Så det här är en liten bit överväldigande, men det är faktiskt 454 00:28:41,390 --> 00:28:43,540 vad vi såg bara på bilderna. 455 00:28:43,540 --> 00:28:49,710 Och det första området ser vi just nu är i grunden projekt konfiguration. 456 00:28:49,710 --> 00:28:53,390 Så allt du vill göra Projektet, vilken typ av enhet, 457 00:28:53,390 --> 00:28:58,810 låt oss bara säga vilken typ av enhet vill du din app ska visas på? 458 00:28:58,810 --> 00:29:01,280 Är det iPhone, iPad eller universell? 459 00:29:01,280 --> 00:29:04,660 Så enhet orientering, allt det här. 460 00:29:04,660 --> 00:29:08,490 Inte mycket viktigt, men skulle kunna vara, men detta 461 00:29:08,490 --> 00:29:11,050 är en plats där du ställer in ditt projekt om du faktiskt 462 00:29:11,050 --> 00:29:15,180 vill distribuera till Apple Store. 463 00:29:15,180 --> 00:29:20,420 >> Okej, låt oss titta på något som är inne i vårt kod. 464 00:29:20,420 --> 00:29:22,360 Låt oss gå igenom filen navigator. 465 00:29:22,360 --> 00:29:30,140 Och dessa är alla filer som redan kom med mallen, mycket trevligt. 466 00:29:30,140 --> 00:29:35,980 Så när vi klickar på en av dem detta är vad det ser ut. 467 00:29:35,980 --> 00:29:38,530 Mycket lik g redigera. 468 00:29:38,530 --> 00:29:41,340 Men du kan se att det syntaxmarkering är förmodligen 469 00:29:41,340 --> 00:29:42,780 lite trevligare. 470 00:29:42,780 --> 00:29:45,610 Och det är faktiskt mycket mer kraftfull än g redigering. 471 00:29:45,610 --> 00:29:49,970 Och du kan komplettera automatiskt en massa saker för dig, 472 00:29:49,970 --> 00:29:52,370 som vi kommer att se mycket snabbt. 473 00:29:52,370 --> 00:29:54,100 >> Vi öppnar felsökning område. 474 00:29:54,100 --> 00:30:02,790 475 00:30:02,790 --> 00:30:07,000 Okej, som vi kan se, konsolen är rätt här. 476 00:30:07,000 --> 00:30:13,840 Detta är vad du kommer att se var du är i printf eller nsloging något. 477 00:30:13,840 --> 00:30:17,155 Så utan vidare, låt oss faktiskt sammanställa appen och se vad som händer. 478 00:30:17,155 --> 00:30:20,000 479 00:30:20,000 --> 00:30:23,410 En viktig egenskap för s-kod, är att s-kod 480 00:30:23,410 --> 00:30:25,850 levereras med en iPhone simulator. 481 00:30:25,850 --> 00:30:29,820 Så du behöver inte ha en iPhone för att prova ditt projekt, 482 00:30:29,820 --> 00:30:34,440 s kod kan simulera att för du, som vi kan se just nu. 483 00:30:34,440 --> 00:30:36,406 >> Det är ganska trevligt. 484 00:30:36,406 --> 00:30:38,640 Det tar lite lite tid att sammanställa 485 00:30:38,640 --> 00:30:43,040 och i princip har vi en tom applikation, 486 00:30:43,040 --> 00:30:44,640 som faktiskt gör ingenting. 487 00:30:44,640 --> 00:30:46,175 Men det samman. 488 00:30:46,175 --> 00:30:47,380 Det är ganska häftigt. 489 00:30:47,380 --> 00:30:50,200 Det är mycket bättre än C, va? 490 00:30:50,200 --> 00:30:52,130 Okej, så låt oss Försök att lägga till något. 491 00:30:52,130 --> 00:30:56,050 492 00:30:56,050 --> 00:31:02,650 En fil som är lite konstigt här kallas storyboard. 493 00:31:02,650 --> 00:31:08,020 Detta är faktiskt en stor, fantastisk funktion för s-kod. 494 00:31:08,020 --> 00:31:14,170 För i s-kod, kan du faktiskt dra och släppa element på gränssnittet 495 00:31:14,170 --> 00:31:17,430 och det kommer direkt dyka upp. 496 00:31:17,430 --> 00:31:18,055 Låt oss försöka det. 497 00:31:18,055 --> 00:31:21,230 498 00:31:21,230 --> 00:31:27,236 >> Vi släpper en etikett här, "Hello World !!!" 499 00:31:27,236 --> 00:31:29,740 Vi kan centrera det. 500 00:31:29,740 --> 00:31:30,970 Ganska coolt. 501 00:31:30,970 --> 00:31:33,915 Nu kör detta stopp simulering. 502 00:31:33,915 --> 00:31:36,940 503 00:31:36,940 --> 00:31:38,700 Här har vi "Hello World !!!" 504 00:31:38,700 --> 00:31:40,810 Vi har inte ens göra någon kodning än. 505 00:31:40,810 --> 00:31:42,750 Vad sjutton är det som händer? 506 00:31:42,750 --> 00:31:45,880 Detta är hur kraftfull Interface Builder kan vara. 507 00:31:45,880 --> 00:31:48,030 Någon sa till och med att du kan nog bara 508 00:31:48,030 --> 00:31:52,800 slutföra en app utan att skriva förmodligen tusen rader kod 509 00:31:52,800 --> 00:31:54,820 bara genom att använda Interface Builder. 510 00:31:54,820 --> 00:31:59,680 Men det är nog inte det bästa sättet att göra det. 511 00:31:59,680 --> 00:32:01,670 >> Nu ska faktiskt komma ner till kodning. 512 00:32:01,670 --> 00:32:04,860 513 00:32:04,860 --> 00:32:08,330 Så strukturen för filen är faktiskt riktigt intressant 514 00:32:08,330 --> 00:32:15,610 eftersom, som ni kanske ser, det finns ingen huvuduppgift någonstans. 515 00:32:15,610 --> 00:32:17,466 Se? 516 00:32:17,466 --> 00:32:19,340 Som vi nämnde tidigare, du kan se att detta 517 00:32:19,340 --> 00:32:22,830 är en implementering fil för en specifik klass. 518 00:32:22,830 --> 00:32:25,690 Men det finns ingen huvud någonstans. 519 00:32:25,690 --> 00:32:27,490 Så var är huvud? 520 00:32:27,490 --> 00:32:31,970 Egentligen finns det en huvudsaklig, men den Huvud är faktiskt dold för dig. 521 00:32:31,970 --> 00:32:34,560 Huvud är här. 522 00:32:34,560 --> 00:32:37,120 Det ser bekant. 523 00:32:37,120 --> 00:32:41,000 >> Så i princip vad iOS gör inuti huvud 524 00:32:41,000 --> 00:32:43,540 är att när huvud är heter, vilket egentligen 525 00:32:43,540 --> 00:32:49,000 när appen körs, det skapar ett objekt som kallas AppDelegate. 526 00:32:49,000 --> 00:32:52,980 527 00:32:52,980 --> 00:32:57,350 Som jag nämnde tidigare, hela app är faktiskt ett objekt i sig. 528 00:32:57,350 --> 00:33:02,270 Så på detta sätt, i stort sett iOS-app är talande kompilatorn 529 00:33:02,270 --> 00:33:05,540 att OK, jag ska skapa en produkt som kallas AppDelegate, 530 00:33:05,540 --> 00:33:07,620 och det kommer att bli min app. 531 00:33:07,620 --> 00:33:09,640 Så du måste gå genom att AppDelegate 532 00:33:09,640 --> 00:33:12,040 och se vad den där killen gör. 533 00:33:12,040 --> 00:33:14,850 Mitt jobb är gjort för mig. 534 00:33:14,850 --> 00:33:22,070 >> Och i AppDelegate kan du se att det finns några riktigt konstiga funktioner, 535 00:33:22,070 --> 00:33:25,290 väl egentligen metoder, som Apple har redan gett dig. 536 00:33:25,290 --> 00:33:27,464 Vilka är dessa? 537 00:33:27,464 --> 00:33:31,010 Dessa är faktiskt bara protokoll att jag talade om. 538 00:33:31,010 --> 00:33:35,670 Så dessa är händelser som Apple har gett dig att börja med. 539 00:33:35,670 --> 00:33:38,050 Det finns ingenting i vissa av funktionerna just nu, 540 00:33:38,050 --> 00:33:40,820 men om vi vill initiera något för vår app 541 00:33:40,820 --> 00:33:46,140 innan du hämtar in visning någon uppfattning, gör vi det här. 542 00:33:46,140 --> 00:33:51,150 >> Du kan bara läsa namnet och jag antar händelsen är faktiskt riktigt klart. 543 00:33:51,150 --> 00:33:54,160 544 00:33:54,160 --> 00:33:58,350 Så nu huvud har skapat ett föremål för AppDelegate. 545 00:33:58,350 --> 00:34:05,220 Och vad AppDelegate kommer att göra är faktiskt också dold för dig. 546 00:34:05,220 --> 00:34:09,250 Den AppDelegate kommer att starta laddar ViewController lager. 547 00:34:09,250 --> 00:34:13,170 Så det är i princip kommer att börja laddar upp alla synpunkter som du har 548 00:34:13,170 --> 00:34:17,500 och bara göra vyn baserad på hierarkin. 549 00:34:17,500 --> 00:34:21,280 >> Så i det här fallet har vi bara en uppfattning, som är här. 550 00:34:21,280 --> 00:34:25,060 Så det är den enda vy som kommer att kallas. 551 00:34:25,060 --> 00:34:28,159 Den ViewController logiken är just här. 552 00:34:28,159 --> 00:34:32,159 Detta är den kod som faktiskt styr vyn såg vi bara. 553 00:34:32,159 --> 00:34:33,679 Okej, låt oss göra något här. 554 00:34:33,679 --> 00:34:44,030 555 00:34:44,030 --> 00:34:50,560 Så viewDidLoad låter som en händelse, när det i själva verket är detta också en delegat, 556 00:34:50,560 --> 00:34:52,500 detta är också ett protokoll. 557 00:34:52,500 --> 00:34:56,350 >> Så vad anser är laddad, allt inuti funktionen 558 00:34:56,350 --> 00:34:57,920 kommer att kallas. 559 00:34:57,920 --> 00:35:02,840 I det här fallet ska vi se "Hej Tianyu! "Om vi ​​kör programmet. 560 00:35:02,840 --> 00:35:09,820 561 00:35:09,820 --> 00:35:12,842 Det börjar bli lite långsam sammanställa storyboard filer. 562 00:35:12,842 --> 00:35:15,440 563 00:35:15,440 --> 00:35:18,190 Jo faktiskt, ser vi en utgång för det. 564 00:35:18,190 --> 00:35:20,720 Det är ganska coolt. 565 00:35:20,720 --> 00:35:22,000 Nu ska faktiskt göra Mario. 566 00:35:22,000 --> 00:35:25,400 567 00:35:25,400 --> 00:35:27,625 Jag ska definiera fungera mycket snabbt. 568 00:35:27,625 --> 00:35:31,510 569 00:35:31,510 --> 00:35:54,245 (int) nivå resultat: marioWithLevels. 570 00:35:54,245 --> 00:36:01,120 571 00:36:01,120 --> 00:36:06,410 >> Okej, detta är faktiskt awesome inslag i s-kod auto färdigställande. 572 00:36:06,410 --> 00:36:10,680 Så när du skriver för och skriv in, Det har redan gett upp mallen 573 00:36:10,680 --> 00:36:12,325 för dig, vilket är ganska coolt. 574 00:36:12,325 --> 00:36:50,480 575 00:36:50,480 --> 00:36:52,850 Det borde se riktigt bekant för er killar. 576 00:36:52,850 --> 00:36:55,940 577 00:36:55,940 --> 00:36:59,680 Tyvärr, det är mitt fel. 578 00:36:59,680 --> 00:37:15,790 579 00:37:15,790 --> 00:37:18,120 Okej, coolt. 580 00:37:18,120 --> 00:37:22,710 Denna logik borde se riktigt bekant till er killar, speciellt just Mario. 581 00:37:22,710 --> 00:37:26,140 >> Men vi kommer nu skriva ut till konsolen varje gång, 582 00:37:26,140 --> 00:37:29,280 eftersom vi vill på något sätt hålla koll på vad vi skriver. 583 00:37:29,280 --> 00:37:31,810 Vi kommer att använda resulterar något senare, 584 00:37:31,810 --> 00:37:35,010 att visa utskrifts ut resultera till användaren. 585 00:37:35,010 --> 00:37:37,730 Så istället vi är bara nslogging allt, 586 00:37:37,730 --> 00:37:42,410 som vi lagrar allt in i ett funktionsanrop resultat, 587 00:37:42,410 --> 00:37:44,070 men logiken är exakt densamma. 588 00:37:44,070 --> 00:37:48,030 589 00:37:48,030 --> 00:37:51,800 Efter att vi avsluta det, vi bara skriva ut våra resultat. 590 00:37:51,800 --> 00:37:59,330 591 00:37:59,330 --> 00:38:04,970 >> Och här i stället för att skriva ut min namn, ska vi kalla en funktion. 592 00:38:04,970 --> 00:38:15,340 593 00:38:15,340 --> 00:38:18,090 Låt oss se vad som händer. 594 00:38:18,090 --> 00:38:21,240 Oj, uppenbarligen. 595 00:38:21,240 --> 00:38:24,320 Vi har en trevlig lite pyramid här ute. 596 00:38:24,320 --> 00:38:28,370 Detta är i grunden C, vi är bara manipulera där du kallar en funktion 597 00:38:28,370 --> 00:38:30,010 och hur ser en funktion se ut. 598 00:38:30,010 --> 00:38:31,560 Det finns inget annat. 599 00:38:31,560 --> 00:38:34,040 Men detta är faktiskt inte mycket spännande här, 600 00:38:34,040 --> 00:38:37,500 eftersom vi inte ser allt från iPhone-appen. 601 00:38:37,500 --> 00:38:42,120 >> Så om du verkligen har en iPhone app-- Om du faktiskt har Mario iOS rätt 602 00:38:42,120 --> 00:38:45,080 Nu, du ska inte att se något som 603 00:38:45,080 --> 00:38:49,450 har något att göra med Mario eftersom alla dessa utgångar till en konsol 604 00:38:49,450 --> 00:38:51,620 är dolda från en användare. 605 00:38:51,620 --> 00:38:53,850 Detta är vad du ser, vilket är "Hello World !!!" 606 00:38:53,850 --> 00:38:55,720 Inte bra. 607 00:38:55,720 --> 00:39:03,090 Nu ska försöka göra användaren se vad exakt är vi skriva ut. 608 00:39:03,090 --> 00:39:06,000 Så vi behöver inte märka längre. 609 00:39:06,000 --> 00:39:09,800 Låt oss försöka lista ut något annat som kan vara till nytta. 610 00:39:09,800 --> 00:39:12,140 >> Det är faktiskt en element som kallas 611 00:39:12,140 --> 00:39:16,460 textfält, vilket skulle kunna vara till stor hjälp för oss. 612 00:39:16,460 --> 00:39:19,880 Den visar i princip en region text som kan redigeras. 613 00:39:19,880 --> 00:39:22,320 Så det ser riktigt bra. 614 00:39:22,320 --> 00:39:23,810 Nu drar den och släpper den. 615 00:39:23,810 --> 00:39:26,880 616 00:39:26,880 --> 00:39:32,670 Wow, vi har en text vy enligt vår uppfattning, riktigt snygga. 617 00:39:32,670 --> 00:39:35,430 Det är lite för stor. 618 00:39:35,430 --> 00:39:38,150 Låt oss göra den mindre. 619 00:39:38,150 --> 00:39:40,290 Sätta den i mitten. 620 00:39:40,290 --> 00:39:43,760 Gör det mindre också. 621 00:39:43,760 --> 00:39:50,110 >> Nu har vi en text vy, vilket vi kunde användas för att visa vårt slutliga resultatet. 622 00:39:50,110 --> 00:39:52,860 Men just nu är det definitivt inte gå till jobbet 623 00:39:52,860 --> 00:39:56,970 eftersom det finns no-- den ViewController vi bara 624 00:39:56,970 --> 00:40:03,010 definieras inte vet att det finns en text vy där ute. 625 00:40:03,010 --> 00:40:06,550 Så vi måste på något sätt länka textvyn vi bara 626 00:40:06,550 --> 00:40:11,660 skapats med den klass som har redan kommit med oss. 627 00:40:11,660 --> 00:40:14,860 >> Det sätt vi gör det är faktiskt riktigt magiskt. 628 00:40:14,860 --> 00:40:18,190 Så öppna upp storyboard. 629 00:40:18,190 --> 00:40:22,220 Det finns en särskild [OHÖRBAR] kallas [? assistent?] [OHÖRBAR]. 630 00:40:22,220 --> 00:40:25,190 När du klickar på det, det är kommer att öppna två filer. 631 00:40:25,190 --> 00:40:29,425 En är en klass och den andra en är en motsvarande vy för den. 632 00:40:29,425 --> 00:40:31,920 Det är mycket, mycket bra. 633 00:40:31,920 --> 00:40:35,950 Och låt oss bara går igenom .h filen. 634 00:40:35,950 --> 00:40:39,110 Kontroll, detta är [OHÖRBAR] logik. 635 00:40:39,110 --> 00:40:47,280 Tryck på Ctrl och dra den text utsikt i deklarationen. 636 00:40:47,280 --> 00:40:48,780 Vi kommer att kalla det outputView. 637 00:40:48,780 --> 00:40:52,189 638 00:40:52,189 --> 00:40:53,670 Anslut. 639 00:40:53,670 --> 00:40:59,420 Så här har vi deklarerat ett nytt egendom för vår ViewController klass. 640 00:40:59,420 --> 00:41:02,300 Och den nya fastigheten är bara textvyn 641 00:41:02,300 --> 00:41:05,000 vi har skapat i gränssnittet byggnaden. 642 00:41:05,000 --> 00:41:07,990 Så på det sättet vi kunde åtkomst alla data 643 00:41:07,990 --> 00:41:13,630 och manipulera allt som är inne utgångs uppfattning, som är fantastisk. 644 00:41:13,630 --> 00:41:19,260 >> Så i vår faktiska koden, låt oss göra något med den. 645 00:41:19,260 --> 00:41:23,810 Så den här gången när vi är som utskrift ut det slutliga resultatet för Mario, 646 00:41:23,810 --> 00:41:28,020 vi är i inte logga något. 647 00:41:28,020 --> 00:41:30,080 Jag menar att vi kunde hålla loggnings uttalande. 648 00:41:30,080 --> 00:41:41,490 Utöver det, vi skicka utläsningen vi bara 649 00:41:41,490 --> 00:41:47,622 skapad till utgångsvisningen, vilket är ett UI Textview vi just skapat. 650 00:41:47,622 --> 00:41:48,746 Nu ska vi se vad som händer. 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 pyramid i appen just nu. 654 00:41:59,130 --> 00:42:06,720 >> Så att användaren kan se vår produktion eftersom Vi har kopierat utgången från vår kod 655 00:42:06,720 --> 00:42:08,045 till vår gränssnittet. 656 00:42:08,045 --> 00:42:10,950 Det är ganska bra. 657 00:42:10,950 --> 00:42:14,990 Det är faktiskt inte så spännande eftersom vi can-- 658 00:42:14,990 --> 00:42:18,250 Allt appen gör är visar en pyramid till dig, 659 00:42:18,250 --> 00:42:20,520 och det finns inget du kan göra åt det. 660 00:42:20,520 --> 00:42:22,330 Det är inte särskilt spännande. 661 00:42:22,330 --> 00:42:27,840 Så nu ska vi göra en knapp som kommer att klara av utsikten. 662 00:42:27,840 --> 00:42:30,290 Verkar som en knapp kommer att vara till hjälp. 663 00:42:30,290 --> 00:42:33,270 Dra och släpp. 664 00:42:33,270 --> 00:42:33,900 Knapp ett. 665 00:42:33,900 --> 00:42:36,730 666 00:42:36,730 --> 00:42:37,320 Knapp två. 667 00:42:37,320 --> 00:42:49,170 668 00:42:49,170 --> 00:42:52,052 >> Så när vi klickar på vänster knappen, bör utsikten rensa. 669 00:42:52,052 --> 00:42:53,635 Det bör finnas ingenting på skärmen. 670 00:42:53,635 --> 00:42:56,970 Och när vi klickar på höger knapp, Mario, 671 00:42:56,970 --> 00:42:59,740 vyn kommer att visas igen. 672 00:42:59,740 --> 00:43:05,510 Så här sättet gör vi också magiska grejer, kontroll och dra 673 00:43:05,510 --> 00:43:08,740 till klassdeklarationen i assiste director-- 674 00:43:08,740 --> 00:43:11,600 i assiste betraktaren. 675 00:43:11,600 --> 00:43:18,620 I det här fallet är vi specificerar att det borde vara en åtgärd. 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å här har vi redan skapat en åtgärd som heter clearMario, 679 00:43:26,830 --> 00:43:34,210 vilket är den metod som skulle kallas när vi trycker på knappen klar. 680 00:43:34,210 --> 00:43:41,030 Så i vår faktiskt kod, låt oss bara sätta utgångstexten och utgångsvisningen 681 00:43:41,030 --> 00:43:44,620 i intet, och på det sättet Det ser ut att vara klar. 682 00:43:44,620 --> 00:43:47,500 683 00:43:47,500 --> 00:43:57,230 I tillägg till detta, låt oss skapa en metod som kallas runMario. 684 00:43:57,230 --> 00:44:00,140 685 00:44:00,140 --> 00:44:03,436 Åh förlåt, bör det inte vara en egenskap. 686 00:44:03,436 --> 00:44:12,107 687 00:44:12,107 --> 00:44:13,940 Okej, som bör vara en åtgärd också. 688 00:44:13,940 --> 00:44:25,780 689 00:44:25,780 --> 00:44:34,740 >> Och när den funktionen är heter, bara köra vi Mario tio. 690 00:44:34,740 --> 00:44:37,620 691 00:44:37,620 --> 00:44:39,780 Förhoppningsvis kommer att bli bra. 692 00:44:39,780 --> 00:44:41,120 Spelar det sammanställa? 693 00:44:41,120 --> 00:44:43,920 Ja. 694 00:44:43,920 --> 00:44:45,090 Nu har vi en vy. 695 00:44:45,090 --> 00:44:46,560 Vi har en utgång. 696 00:44:46,560 --> 00:44:50,040 Och låt oss bara se vad som händer. 697 00:44:50,040 --> 00:44:52,590 Det är borta. 698 00:44:52,590 --> 00:44:54,500 Det är tillbaka igen. 699 00:44:54,500 --> 00:44:57,620 Så här har vi specificerat vilken typ av funktion 700 00:44:57,620 --> 00:45:00,400 kommer att kallas när Vi skriver in något, 701 00:45:00,400 --> 00:45:03,160 När vi trycker på en viss knapp. 702 00:45:03,160 --> 00:45:07,890 Detta är i princip Målet action system 703 00:45:07,890 --> 00:45:12,510 för händelsestyrd programmering i mål C. 704 00:45:12,510 --> 00:45:15,030 >> I tillägg till detta, det är inte mycket spännande 705 00:45:15,030 --> 00:45:19,810 eftersom vi inte kan verkligen förändra hur högt pyramiden kommer att vara, 706 00:45:19,810 --> 00:45:23,640 så vi vill förmodligen något sätt få en ingång från användaren 707 00:45:23,640 --> 00:45:29,490 och ändra höjden på den pyramid utifrån vad de utgång. 708 00:45:29,490 --> 00:45:32,900 Så vi kommer att göra det. 709 00:45:32,900 --> 00:45:38,720 Så den här gången när vi kallar runMario, vi inte bara kalla Mario direkt. 710 00:45:38,720 --> 00:46:06,280 711 00:46:06,280 --> 00:46:07,000 Den här är titeln. 712 00:46:07,000 --> 00:46:22,180 713 00:46:22,180 --> 00:46:23,700 >> Delegera. 714 00:46:23,700 --> 00:46:25,160 Detta är mycket intressant. 715 00:46:25,160 --> 00:46:26,720 Vad är en delegat? 716 00:46:26,720 --> 00:46:28,950 Jag kommer att sätta själv här. 717 00:46:28,950 --> 00:46:31,038 Och vi kommer att se vad det betyder senare. 718 00:46:31,038 --> 00:46:46,380 719 00:46:46,380 --> 00:46:51,120 Så här har vi i princip skapat en specifik instans kallas UI varning 720 00:46:51,120 --> 00:46:52,210 vy. 721 00:46:52,210 --> 00:46:54,440 En UI alert uppfattning är princip vad du kommer 722 00:46:54,440 --> 00:46:58,940 se varje gång något pops upp och frågar efter inmatning, 723 00:46:58,940 --> 00:47:03,080 gillar vad som händer när du försöker att köpa något på en App Store. 724 00:47:03,080 --> 00:47:14,250 >> I tillägg till detta, efter att du skapa den, visar vi bara varningen. 725 00:47:14,250 --> 00:47:20,090 726 00:47:20,090 --> 00:47:22,568 Okej, låt oss bara snabbt Testet kommer att arbete eller inte. 727 00:47:22,568 --> 00:47:31,105 728 00:47:31,105 --> 00:47:32,140 Det är väldigt coolt. 729 00:47:32,140 --> 00:47:55,370 730 00:47:55,370 --> 00:47:59,120 Nu ska faktiskt skapa en inmatningsfält för UI alert. 731 00:47:59,120 --> 00:48:01,170 Detta är hur vi gör det. 732 00:48:01,170 --> 00:48:07,490 Och vi bör ha en ingångsvisningen för registreringen. 733 00:48:07,490 --> 00:48:09,020 Väldigt coolt. 734 00:48:09,020 --> 00:48:12,330 Låt oss bara säga 10. 735 00:48:12,330 --> 00:48:14,900 >> Det är inte gör något rätt nu eftersom samtalet faktiskt 736 00:48:14,900 --> 00:48:17,770 förändrades inte för att utföra mario. 737 00:48:17,770 --> 00:48:23,470 Så detta har blivit lite lite konstigt eftersom när 738 00:48:23,470 --> 00:48:30,790 Vi trycker ned en knapp, när vi trycker på en knapp i varnings uppfattning, 739 00:48:30,790 --> 00:48:35,560 något skulle hända, men det händer inte. 740 00:48:35,560 --> 00:48:37,220 Hur ska vi hinna det? 741 00:48:37,220 --> 00:48:41,280 Hur vet vi att en användare har avfärdat en varning vy 742 00:48:41,280 --> 00:48:45,630 och redan angett ett nummer, eftersom just nu ingenting som faktiskt händer. 743 00:48:45,630 --> 00:48:50,450 >> Tja, du kanske har gissat det rätt, delegering. 744 00:48:50,450 --> 00:48:55,440 Så förutom alla dessa förklaringar, 745 00:48:55,440 --> 00:49:03,190 Vi behöver lägga till en ny delegation till Det kallas UI alert utsikt delegat. 746 00:49:03,190 --> 00:49:06,440 Så att varje enskild interaktion eller händelse 747 00:49:06,440 --> 00:49:10,190 att vi kommer att ha med UI alert vy den 748 00:49:10,190 --> 00:49:14,100 kommer att hanteras genom vår klass också. 749 00:49:14,100 --> 00:49:26,297 >> Så utöver det, kommer att vara alert view klicka på knappen vid index. 750 00:49:26,297 --> 00:49:34,260 751 00:49:34,260 --> 00:49:37,730 Detta har uppnåtts. 752 00:49:37,730 --> 00:49:42,020 Så i det fallet har vi already-- så vi har 753 00:49:42,020 --> 00:49:46,210 upptäckte ett protokoll som kommer att hantera händelsen när 754 00:49:46,210 --> 00:49:51,320 vi klickar på knappen Klar på alerten uppfattning. 755 00:49:51,320 --> 00:49:55,976 Så varje gång vi avvisa alert uppfattning bör detta ske. 756 00:49:55,976 --> 00:49:57,350 Låt mig bara testa det mycket snabbt. 757 00:49:57,350 --> 00:50:16,220 758 00:50:16,220 --> 00:50:19,300 Jo faktiskt, har vi nått hit. 759 00:50:19,300 --> 00:50:22,210 >> Så här, vad vi kommer inte faktiskt får är faktiskt 760 00:50:22,210 --> 00:50:43,120 få the-- Så vi vill komma ut den text som vi tidigare har 761 00:50:43,120 --> 00:50:45,350 in i varnings vyn. 762 00:50:45,350 --> 00:50:48,505 Och baserat på text, vi är kommer att visa Mario. 763 00:50:48,505 --> 00:50:52,336 764 00:50:52,336 --> 00:50:55,480 Detta visar sig mycket snabbt om det faktiskt fungerar eller inte. 765 00:50:55,480 --> 00:50:59,476 Så i det fallet, om vi input, låt oss säga, 10, bör vi se 10. 766 00:50:59,476 --> 00:51:02,740 767 00:51:02,740 --> 00:51:05,210 >> Mycket bra, vi har ett antal här. 768 00:51:05,210 --> 00:51:06,470 Det är ganska bra. 769 00:51:06,470 --> 00:51:16,840 Nu det sista steget kommer be-- Så sista steget vi behöver göra just nu 770 00:51:16,840 --> 00:51:21,100 är bara en ringa Mario med nivå beroende på insignalen 771 00:51:21,100 --> 00:51:23,270 att vi har lagt ner alert uppfattning. 772 00:51:23,270 --> 00:51:26,920 Så vi behöver konvertera denna sträng till iOS. 773 00:51:26,920 --> 00:51:33,820 774 00:51:33,820 --> 00:51:35,496 Statisk spill är mycket häftigt. 775 00:51:35,496 --> 00:51:44,930 776 00:51:44,930 --> 00:51:51,182 Och då är vi bara ringa själv marioWithLevels värde. 777 00:51:51,182 --> 00:51:54,550 778 00:51:54,550 --> 00:51:56,284 Låt oss se kommer att faktiskt fungerar eller inte. 779 00:51:56,284 --> 00:51:59,070 780 00:51:59,070 --> 00:52:01,550 >> Vi är redan gett en pyramid. 781 00:52:01,550 --> 00:52:04,785 Låt oss försöka ändra höjden. 782 00:52:04,785 --> 00:52:06,530 Som faktiskt fungerar. 783 00:52:06,530 --> 00:52:07,610 Det är ganska coolt. 784 00:52:07,610 --> 00:52:10,420 Så att nu kan du bara input något värde som du vill. 785 00:52:10,420 --> 00:52:12,440 Låt oss bara säga fyra. 786 00:52:12,440 --> 00:52:14,260 Det är ganska häftigt. 787 00:52:14,260 --> 00:52:17,090 Så detta är i grunden ett riktigt snabbt exempel 788 00:52:17,090 --> 00:52:23,170 för hur man skapar ett projekt i s-kod och hur man verkligen snabbt koppla upp 789 00:52:23,170 --> 00:52:26,220 några riktigt enkla händelser och funktioner. 790 00:52:26,220 --> 00:52:28,840 >> Så källan går sättas på nätet senare. 791 00:52:28,840 --> 00:52:33,400 Så om du är intresserad i hur iOS Mario fungerar, 792 00:52:33,400 --> 00:52:38,360 Jag kommer att sätta exakt samma projekt har laddats in i CS50 hemsida senare. 793 00:52:38,360 --> 00:52:41,260 Vi är i grunden gjort med sommar, och innan vi avslutar 794 00:52:41,260 --> 00:52:45,190 Jag vill bara peka dig killar att några riktigt grymma resurser som 795 00:52:45,190 --> 00:52:47,550 finns tillgängliga på nätet. 796 00:52:47,550 --> 00:52:52,270 >> Uppenbar Apple dokumentationen kommer att vara till stor hjälp. 797 00:52:52,270 --> 00:52:57,630 Men utöver det, jag särskilt rekommenderar fyra källor, kod skola, 798 00:52:57,630 --> 00:53:02,120 trädkoja, AppCoda och WWDC videor. 799 00:53:02,120 --> 00:53:07,270 Kod skola och trädkoja är två online Educating webbplatser, 800 00:53:07,270 --> 00:53:10,210 som specifikt fokuserar på programvaruteknik. 801 00:53:10,210 --> 00:53:16,930 Speciellt för kod skolan, de har riktigt bra handledning om iOS. 802 00:53:16,930 --> 00:53:19,550 >> Det är ett riktigt snabbt exempel för det. 803 00:53:19,550 --> 00:53:22,980 De skapar faktiskt en riktigt cute-- titta på den lilla söta iPhone 804 00:53:22,980 --> 00:53:24,920 snubbe där borta, det är ganska häftigt. 805 00:53:24,920 --> 00:53:31,010 Och sättet de förklarar Mål C syntax är helt klart. 806 00:53:31,010 --> 00:53:32,230 Tree house är samma. 807 00:53:32,230 --> 00:53:34,660 Och AppCoda är ett forum. 808 00:53:34,660 --> 00:53:38,130 Det är faktiskt en blogg som kördes av en riktigt erfaren Mål C 809 00:53:38,130 --> 00:53:39,120 programmerare. 810 00:53:39,120 --> 00:53:43,950 Och alla dessa tutorials i AppCoda är ganska kort och lätt att genomföra, 811 00:53:43,950 --> 00:53:45,390 rekommenderas. 812 00:53:45,390 --> 00:53:47,700 >> Och om du är en utvecklare, definitivt gå kolla 813 00:53:47,700 --> 00:53:55,660 hur WWDC videor där du kan lär dig de senaste iOS programmering 814 00:53:55,660 --> 00:53:58,250 tekniker, API och bibliotek. 815 00:53:58,250 --> 00:54:02,850 Så det är ganska mycket den för seminariet. 816 00:54:02,850 --> 00:54:03,820 Tack så mycket. 817 00:54:03,820 --> 00:54:08,040 Och jag hoppas du har kul skapa din egen iOS-app. 818 00:54:08,040 --> 00:54:09,302