1 00:00:00,000 --> 00:00:11,420 2 00:00:11,420 --> 00:00:13,590 >> Tianyu LIU: Hei, cum e merge toată lumea? 3 00:00:13,590 --> 00:00:20,250 Și aceasta este iOS App Programarea de obiectiv seminar c. 4 00:00:20,250 --> 00:00:21,520 Și numele meu este Tianyu Liu. 5 00:00:21,520 --> 00:00:26,114 Sunt un junior Lowell chiar acum, concentrarea în informatică. 6 00:00:26,114 --> 00:00:28,030 Deci, în acest seminar am O să te învețe baieti 7 00:00:28,030 --> 00:00:30,770 un pic despre cum să faci o aplicație. 8 00:00:30,770 --> 00:00:33,030 Yay, te excitat pentru ea. 9 00:00:33,030 --> 00:00:36,790 >> Deci, înainte de a începe chiar de scufundări în partea de programare actuală, 10 00:00:36,790 --> 00:00:41,840 hai să vorbim despre foarte repede de ce ar putea să vă doriți să construiască o aplicație iOS? 11 00:00:41,840 --> 00:00:43,940 De ce este atât de minunat iOS? 12 00:00:43,940 --> 00:00:47,250 Deci prima problemă, primul lucru care este destul de minunat pentru noi, 13 00:00:47,250 --> 00:00:51,190 mai ales ca CS50 elev, este că iOS 14 00:00:51,190 --> 00:00:55,860 folosește Obiectiv C. Ei bine, nu e un nou limbaj numit Swift, 15 00:00:55,860 --> 00:00:58,260 dar noi nu vom utilizați ca în acest seminar. 16 00:00:58,260 --> 00:01:01,540 Dacă sunteți interesat de Swift, acolo este un seminar independent despre asta. 17 00:01:01,540 --> 00:01:05,590 Dar Obiectivul C este, în principiu un superset de C. Înțeles 18 00:01:05,590 --> 00:01:10,230 că tot ceea ce folosească în C poate tradus în Obiectiv C 19 00:01:10,230 --> 00:01:11,630 foarte ușor. 20 00:01:11,630 --> 00:01:15,730 >> După cum s-ar putea vedea mai târziu, că într-adevăr există unele sintaxă foarte de bază, sunt 21 00:01:15,730 --> 00:01:19,790 în esență exact la fel, C și Obiectiv C. Deci, 22 00:01:19,790 --> 00:01:22,860 din moment ce s-au luat CS50 această departe, tu deja 23 00:01:22,860 --> 00:01:26,500 Știi Obiectiv C, cel puțin 40%. 24 00:01:26,500 --> 00:01:30,720 De asemenea, Apple are un foarte API robust pentru iOS. 25 00:01:30,720 --> 00:01:33,750 Există o mulțime de foarte nebun lucruri pe care le puteți face cu ea. 26 00:01:33,750 --> 00:01:36,760 Una dintre care este cineva de fapt a creat o aplicație iOS 27 00:01:36,760 --> 00:01:40,600 pentru autoturisme control, care este destul de interesant. 28 00:01:40,600 --> 00:01:42,610 Probabil un elicopter este mult mai interesant. 29 00:01:42,610 --> 00:01:47,020 Dar asta e cât de puternic API-ul iOS poate fi. 30 00:01:47,020 --> 00:01:49,340 >> Și, după cum s-ar putea avea a dat seama chiar acum, 31 00:01:49,340 --> 00:01:53,000 preaplin stivă este, probabil, una dintre cele mai importante resurse on-line 32 00:01:53,000 --> 00:01:54,250 disponibil pentru tine. 33 00:01:54,250 --> 00:01:58,090 Și o veste bună, pentru fiecare singură problemă puteți eventual 34 00:01:58,090 --> 00:02:01,840 cred că de dumneavoastră în timp ce construirea proiect final în Obiectiv C, 35 00:02:01,840 --> 00:02:05,910 este probabil un răspuns stivă de preaplin. 36 00:02:05,910 --> 00:02:07,420 E doar minunat. 37 00:02:07,420 --> 00:02:12,780 Pe lângă asta, iOS este cu adevărat o platformă 38 00:02:12,780 --> 00:02:16,260 în cazul în care se poate ajunge un mare audiență cu putin efort. 39 00:02:16,260 --> 00:02:20,170 Nu e ca Android, în cazul în care totul e destul de fragmentat. 40 00:02:20,170 --> 00:02:22,540 >> Totul iOS este unificat. 41 00:02:22,540 --> 00:02:25,920 Și, atâta timp cât vă creați o aplicație pentru iPhone, 42 00:02:25,920 --> 00:02:31,260 puteți foarte ușor port care la iPad, iPad mini, sau diferite dimensiuni iPhone. 43 00:02:31,260 --> 00:02:33,050 Acestea sunt toate foarte convenabil. 44 00:02:33,050 --> 00:02:36,430 Și e doar foarte bun pentru a impresiona prietenii tai. 45 00:02:36,430 --> 00:02:38,920 Aveți posibilitatea să țineți doar un iPhone și spune prietenul tău hei, 46 00:02:38,920 --> 00:02:40,250 acest lucru este app fac. 47 00:02:40,250 --> 00:02:43,860 Puteți face asta pentru orice aplicații desktop, care este frumos. 48 00:02:43,860 --> 00:02:48,870 >> Bine, acum hai efectiv minim în limba Obiectiv C. 49 00:02:48,870 --> 00:02:52,910 Deci, de ce să nu începem cu unele sintaxă într-adevăr de bază. 50 00:02:52,910 --> 00:02:57,410 Așa cum am menționat mai înainte Obiectiv C Este practic un superset de C. 51 00:02:57,410 --> 00:03:01,860 Deci, o mulțime de sintaxă de bază sunt de fapt exact la fel. 52 00:03:01,860 --> 00:03:06,150 Declararea unei variabile și adăugarea a două variabile împreună 53 00:03:06,150 --> 00:03:09,440 este exact așa cum am făcut în Mario. 54 00:03:09,440 --> 00:03:11,140 Nimic nou aici. 55 00:03:11,140 --> 00:03:17,370 >> În mod similar, chiriașul de buclă și condiție este, de asemenea, la fel. 56 00:03:17,370 --> 00:03:22,370 Puteți face o buclă la fel ca tine au făcut într-un Mario [neauzit]. 57 00:03:22,370 --> 00:03:26,280 Și poți să faci condiții la fel cum ceea ce 58 00:03:26,280 --> 00:03:29,240 au făcut în seturi p anterioare. 59 00:03:29,240 --> 00:03:33,400 Cu toate acestea, Objective C nu este complet C, 60 00:03:33,400 --> 00:03:36,640 și nu există ceva care este un fel de ciudat cu privire la aceasta. 61 00:03:36,640 --> 00:03:42,340 >> Prima fiind că, atunci când sunt faci programare C, te sun de obicei 62 00:03:42,340 --> 00:03:46,310 includ și apoi un nume bibliotecă. 63 00:03:46,310 --> 00:03:49,860 Dar, în Obiectiv C suni asta import. 64 00:03:49,860 --> 00:03:53,100 Spunând: Practic funcționalitate, doar nume diferite. 65 00:03:53,100 --> 00:03:55,940 Și siruri de caractere sunt de fapt un pic ciudat. 66 00:03:55,940 --> 00:03:58,250 Puteti vedea că primul lucru care este un fel de ciudat 67 00:03:58,250 --> 00:04:04,190 este că aveți o destul de weird-- sorry-- aveți un NS destul de ciudate 68 00:04:04,190 --> 00:04:04,960 Înregistrează aici. 69 00:04:04,960 --> 00:04:07,452 70 00:04:07,452 --> 00:04:09,160 Și al doilea lucru asta e un fel de ciudat 71 00:04:09,160 --> 00:04:14,090 este aveți o la semn înainte declararea de fapt șirul. 72 00:04:14,090 --> 00:04:19,209 Deci, la semnul practic semnifică că un șir nu este doar un șir de caractere, 73 00:04:19,209 --> 00:04:20,880 aceasta este de fapt un obiect. 74 00:04:20,880 --> 00:04:22,780 Vom explica care mai târziu așa nu 75 00:04:22,780 --> 00:04:25,800 panică dacă nu să înțeleagă ce înseamnă asta. 76 00:04:25,800 --> 00:04:29,980 Și de imprimare pentru consolă este un pic diferite, deoarece în C numim printf, 77 00:04:29,980 --> 00:04:33,350 dar în Obiectiv C numim [neauzit]. 78 00:04:33,350 --> 00:04:35,640 >> S-ar putea fi mirat ce este. 79 00:04:35,640 --> 00:04:38,070 Aceasta este, în principiu printf, doar o altă limbă. 80 00:04:38,070 --> 00:04:41,370 Exact aceeași utilizare, exact aceeași funcționalitate. 81 00:04:41,370 --> 00:04:44,060 Ei bine, se pare că Obiectiv C de fapt 82 00:04:44,060 --> 00:04:50,040 are o ns prefix în aproape totul, fiecare tip de date de bază, 83 00:04:50,040 --> 00:04:52,690 NSString, nsarray, nsdictionary. 84 00:04:52,690 --> 00:04:56,340 Motivul fiind acela ns înseamnă de fapt Pasul următor, 85 00:04:56,340 --> 00:04:59,980 care este o companie care Steve Jobs a fondat, 86 00:04:59,980 --> 00:05:03,960 care este o companie care Limba Objective C se naște. 87 00:05:03,960 --> 00:05:06,140 Deci, aceasta este, în principiu tradiție. 88 00:05:06,140 --> 00:05:09,010 Știu că e un pic ciudat, dar e Apple. 89 00:05:09,010 --> 00:05:16,840 >> Deci, ceva care este chiar mai ciudat decât că este o declarație funcție. 90 00:05:16,840 --> 00:05:22,600 Acest lucru este foarte diferit de ceea ce am a se vedea în C, pentru că aici de fapt 91 00:05:22,600 --> 00:05:25,190 nu arata ca C mai. 92 00:05:25,190 --> 00:05:28,810 Ceea ce here-- avea de fel acest lucru nu este un punct de glonț, 93 00:05:28,810 --> 00:05:30,690 acesta este un semn minus. 94 00:05:30,690 --> 00:05:36,440 Ai o paranteză semnul minus nule și apoi numele funcției. 95 00:05:36,440 --> 00:05:38,450 Să spunem că, dacă ne-am au Bună ziua lume, atunci 96 00:05:38,450 --> 00:05:42,820 tipul întoarcere ar fi nule pentru că ne vom întoarce nimic. 97 00:05:42,820 --> 00:05:44,680 >> Ceea ce devine foarte ciudat este că atunci când ești 98 00:05:44,680 --> 00:05:49,580 care au mai mult de un parametru trece într-o aceeași funcție care 99 00:05:49,580 --> 00:05:53,870 va fi într-adevăr ciudat cum se arată aici. 100 00:05:53,870 --> 00:05:58,230 Avem un nume metodă, chemat addInt la [inaudibil] 101 00:05:58,230 --> 00:06:00,370 și ne trece un parametru. 102 00:06:00,370 --> 00:06:05,170 Dar, după aceea, ne-am mai mult apel nume metodă cu. 103 00:06:05,170 --> 00:06:08,500 Și, după ce vom trece cu al doilea parametru. 104 00:06:08,500 --> 00:06:11,940 Acesta este de fapt un pic ciudat, Dar toate aceste declarații de funcții 105 00:06:11,940 --> 00:06:14,770 urmează același model ca și acest lucru. 106 00:06:14,770 --> 00:06:17,450 >> Avem un semn minus pentru a începe cu. 107 00:06:17,450 --> 00:06:21,550 Semnul minus ar putea fi un semn plus uneori bazate pe ce fel de metodă 108 00:06:21,550 --> 00:06:22,340 este. 109 00:06:22,340 --> 00:06:25,000 Metoda este de fapt un alt nume pentru funcție. 110 00:06:25,000 --> 00:06:26,760 Și am de gând să explică faptul că mai târziu, când 111 00:06:26,760 --> 00:06:30,580 vorbim despre obiect Programarea orientată. 112 00:06:30,580 --> 00:06:34,300 Ai specificați în primul rând revenirea tip paranteze interior, 113 00:06:34,300 --> 00:06:37,450 după care vine numele metodei. 114 00:06:37,450 --> 00:06:40,310 Te trece un parametru. 115 00:06:40,310 --> 00:06:44,750 Și dacă aveți mai mulți parametri aveți nevoie pentru a extinde numele metodei 116 00:06:44,750 --> 00:06:46,770 și, practic, scrie ceva mai mult aici. 117 00:06:46,770 --> 00:06:48,090 >> Ar putea fi orice vrei. 118 00:06:48,090 --> 00:06:50,140 În cazul nostru este cu. 119 00:06:50,140 --> 00:06:56,160 Dar ai putea spune scop, sau sau sau ABC bar plin, ce vrei tu. 120 00:06:56,160 --> 00:06:59,500 Și apoi, după care ești care trece parametru b. 121 00:06:59,500 --> 00:07:01,750 Acesta este un adevărat ciudat convenție dar suntem 122 00:07:01,750 --> 00:07:05,800 O să vezi de ce Apple a vrut pentru a face asta foarte repede. 123 00:07:05,800 --> 00:07:10,530 Deci, cum te sun funcție? 124 00:07:10,530 --> 00:07:15,520 Apelarea o funcție în Obiectiv C este de asemenea diferită de C. 125 00:07:15,520 --> 00:07:18,170 >> De fapt, de asteptare o Funcția în Obiectiv C 126 00:07:18,170 --> 00:07:21,030 este mai mult ca vorbesti cu cineva. 127 00:07:21,030 --> 00:07:27,030 Aici avem de sine, care se numește un obiect. 128 00:07:27,030 --> 00:07:33,830 Ești practic spui obiecții sine de a spune "Hello World!" 129 00:07:33,830 --> 00:07:36,830 Acesta este modul de a apela funcția. 130 00:07:36,830 --> 00:07:41,690 Un obiect și un nume metodă combinate între ele. 131 00:07:41,690 --> 00:07:49,600 Și acest lucru este în cazul în care extinderea ciudat pentru denumirea metodei într-adevăr intră în joc. 132 00:07:49,600 --> 00:07:52,150 >> Să ne uităm la al doilea exemplu. 133 00:07:52,150 --> 00:07:56,780 Tocmai am definit o metoda numita addInt cu bla bla bla. 134 00:07:56,780 --> 00:08:00,066 Deci, în acest caz, atunci când sunt de asteptare că [specific? Mesajul?] că va 135 00:08:00,066 --> 00:08:02,035 sa arate ca auto addInt: 10 cu: 2. 136 00:08:02,035 --> 00:08:05,410 137 00:08:05,410 --> 00:08:08,070 Se pare că limba engleză. 138 00:08:08,070 --> 00:08:11,980 Deși funcția Declarația funcție este ciudat, 139 00:08:11,980 --> 00:08:15,600 punctul de Obiectiv lui C Metoda model declarații, 140 00:08:15,600 --> 00:08:18,830 este că, atunci când sunt de asteptare funcția sau metoda 141 00:08:18,830 --> 00:08:21,980 se va suna ca efectiv engleză. 142 00:08:21,980 --> 00:08:25,270 Deci este foarte intuitiv odată ce te în ea. 143 00:08:25,270 --> 00:08:28,740 >> Mai ales în acest caz, în cazul în care puteți practic 144 00:08:28,740 --> 00:08:33,010 vedea că numele funcției este un fel de documentare în sine. 145 00:08:33,010 --> 00:08:35,390 Nu aveți nevoie de nici o mai multe explicații pentru a vedea 146 00:08:35,390 --> 00:08:42,770 exact ceea ce se întâmplă, ceea ce exact un parametru face. 147 00:08:42,770 --> 00:08:48,470 Dincolo de faptul că, hai sa vorbim un pic bit despre programarea orientată obiect. 148 00:08:48,470 --> 00:08:52,160 Programarea orientata obiect este unul dintre programarea fundamentală 149 00:08:52,160 --> 00:08:57,110 tehnici sau modele care este folosit de Obiectiv C. Obiectiv C 150 00:08:57,110 --> 00:09:03,110 se numește Objective C, nu C, pentru un motiv foarte bun. 151 00:09:03,110 --> 00:09:07,560 >> Deci, înainte de a intra în C sintaxa Obiectiv, 152 00:09:07,560 --> 00:09:11,670 Să-adevăr uita repede la exact ceea ce este un obiect. 153 00:09:11,670 --> 00:09:15,480 Am făcut, probabil, ceva ca obiect înainte, care 154 00:09:15,480 --> 00:09:19,780 este numit struct, atunci când sunt de punere în aplicare un copac sau o listă legată 155 00:09:19,780 --> 00:09:25,730 sau [? încercați. ?] Deci, e practic ca o struct, 156 00:09:25,730 --> 00:09:28,560 dar este mult mai puternic decât asta. 157 00:09:28,560 --> 00:09:33,150 Un obiect are metode și proprietăți. 158 00:09:33,150 --> 00:09:35,310 Metodele sunt practic funcții. 159 00:09:35,310 --> 00:09:39,480 Practic funcționează ca un specifice unui anumit obiect. 160 00:09:39,480 --> 00:09:45,440 >> Și proprietăți sunt de fapt câmp specificați în struct. 161 00:09:45,440 --> 00:09:48,500 Deci, pentru fiecare obiect avem o proprietate 162 00:09:48,500 --> 00:09:53,160 că are unele variabile care sunt specifice obiectului. 163 00:09:53,160 --> 00:09:57,170 Și avem câteva funcții care sunt, de asemenea, specifice obiectului. 164 00:09:57,170 --> 00:10:01,180 Și funcțiile sunt numite metode și variabilele sunt numite proprietăți. 165 00:10:01,180 --> 00:10:03,190 E doar un nume fantezist. 166 00:10:03,190 --> 00:10:10,440 În timp ce de fapt, fiecare vizualizare unică vezi în timp ce deschideți o aplicație iOS, 167 00:10:10,440 --> 00:10:17,720 Să spunem că Twitter sau Facebook, fiecare vizualizare unică ce vezi este un obiect. 168 00:10:17,720 --> 00:10:22,110 Și chiar întregul aplicația este un obiect pentru a începe cu. 169 00:10:22,110 --> 00:10:25,340 Concept foarte interesant. 170 00:10:25,340 --> 00:10:28,480 >> Și de ce vrem obiect Programarea orientată? 171 00:10:28,480 --> 00:10:33,530 Deci, vă puteți imagina că, atunci când Programul devine destul de complicat. 172 00:10:33,530 --> 00:10:36,400 Să spunem doar că atunci când ești de punere în aplicare tablă de șah, 173 00:10:36,400 --> 00:10:40,020 logica este de gând să fie într-adevăr complicat. 174 00:10:40,020 --> 00:10:43,280 Ai 36 diferite bucăți, astfel încât, dacă 175 00:10:43,280 --> 00:10:48,370 vrea să scrie logica pentru toți 36 piese diferite în șah, 176 00:10:48,370 --> 00:10:52,150 care va fi o mulțime de diferite functii si variabile. 177 00:10:52,150 --> 00:10:54,070 E o mulțime de probleme. 178 00:10:54,070 --> 00:10:58,980 Și probabil ai de gând să scrie o metodă diferită sau funcție diferită 179 00:10:58,980 --> 00:11:03,950 pentru fiecare piesei de controla exact ceea ce fac ei. 180 00:11:03,950 --> 00:11:08,830 >> Dar dacă faci orientat obiect programare, toate aceste piese 181 00:11:08,830 --> 00:11:12,440 pot fi captate în un obiect unic. 182 00:11:12,440 --> 00:11:16,111 Iar obiectul va avea unele comune proprietăți, cum ar fi ce fel de pătrundere 183 00:11:16,111 --> 00:11:16,610 este? 184 00:11:16,610 --> 00:11:17,740 Ce culoare are? 185 00:11:17,740 --> 00:11:19,480 Cum se poate muta? 186 00:11:19,480 --> 00:11:24,660 Și în acest fel aveți foarte mult simplificată logica ea. 187 00:11:24,660 --> 00:11:28,480 Deci, este doar o modalitate foarte bună pentru a face programe complicate, 188 00:11:28,480 --> 00:11:33,700 și relația ierarhică în cadrul programului, foarte simplu. 189 00:11:33,700 --> 00:11:36,800 Așa cum vom vedea de ce foarte repede atunci când 190 00:11:36,800 --> 00:11:39,660 suntem de fapt facem programming-- când suntem de fapt 191 00:11:39,660 --> 00:11:42,830 face un cod S programare sesiune mai târziu. 192 00:11:42,830 --> 00:11:48,120 >> Ei bine, în plus față de faptul că, Programarea orientată obiect 193 00:11:48,120 --> 00:11:50,030 este doar o mulțime de distracție. 194 00:11:50,030 --> 00:11:51,990 Ai pentru a proiecta propriul obiect. 195 00:11:51,990 --> 00:11:56,080 Trebuie să proiecteze ceea ce face se arata ca de unul singur. 196 00:11:56,080 --> 00:11:58,250 Nu există nici un răspuns corect la ea. 197 00:11:58,250 --> 00:12:02,940 Și este absolut interesant. 198 00:12:02,940 --> 00:12:07,270 Deci, în programarea orientată obiect, două concepte fundamentale 199 00:12:07,270 --> 00:12:10,130 va fi de clasă și instanță. 200 00:12:10,130 --> 00:12:13,570 O clasă este de fapt un șablon pentru obiect. 201 00:12:13,570 --> 00:12:18,070 Și o instanță este în esență un obiect specific. 202 00:12:18,070 --> 00:12:21,090 >> Să spunem că faci o prăjitură. 203 00:12:21,090 --> 00:12:24,800 În acest caz, fiecare cookie ajungi de fapt cu 204 00:12:24,800 --> 00:12:27,310 va fi un obiect. 205 00:12:27,310 --> 00:12:35,830 Dar placa cookie îl utilizați pentru a coace toate cookie-urile vor fi o clasă. 206 00:12:35,830 --> 00:12:37,880 O clasă este de fapt un șablon. 207 00:12:37,880 --> 00:12:46,170 Iar instanța va fi unul specific obiect creat din acea clasă. 208 00:12:46,170 --> 00:12:49,970 >> Și o instanță va fi creat pe baza declaratiei de clasă, 209 00:12:49,970 --> 00:12:56,760 așa cum vom vedea în imagini ulterioare. 210 00:12:56,760 --> 00:13:00,010 Deci, hai sa facem de fapt un adevărat exemplu rapid [neauzit]. 211 00:13:00,010 --> 00:13:04,280 Să presupunem că suntem de declarare un obiect pentru o pisica. 212 00:13:04,280 --> 00:13:07,930 Obiectul trebuie să have-- clasa pisica ar trebui 213 00:13:07,930 --> 00:13:11,260 au unele proprietăți și metode. 214 00:13:11,260 --> 00:13:17,300 Ce fel de proprietati ar trebui să a clasă have-- ar trebui să aibă pisica? 215 00:13:17,300 --> 00:13:20,580 >> De exemplu, culoare, vârstă și rasă, cei 216 00:13:20,580 --> 00:13:24,440 va fi variabile care sunt specifice pentru fiecare pisica. 217 00:13:24,440 --> 00:13:27,790 Iar acestea sunt unele lucruri pe care le folosim pentru a descrie o pisica. 218 00:13:27,790 --> 00:13:31,880 Ce fel de metode, sau ce poate face o pisică? 219 00:13:31,880 --> 00:13:37,160 Câteva exemple rapide ar fi Chase mouse-ul, mânca pește sau doar miau. 220 00:13:37,160 --> 00:13:40,900 Aceasta este o foarte repede exemplu de clasă pisică. 221 00:13:40,900 --> 00:13:46,920 Și într-adevăr un anumit obiect pisica va fi o pisica 222 00:13:46,920 --> 00:13:50,930 în cazul în care specificăm culoare, vârsta și rasa. 223 00:13:50,930 --> 00:13:53,790 >> În acest caz, obiectul nostru este nu mai este un clasă mai. 224 00:13:53,790 --> 00:14:00,010 Am copiați șablonul de clasă și specificăm fiecare informații specifice 225 00:14:00,010 --> 00:14:04,510 pentru că anumit obiect să fie independent. 226 00:14:04,510 --> 00:14:09,350 Iar atunci când fac apel o metodă în interiorul unui obiect, 227 00:14:09,350 --> 00:14:16,640 te sun doar miau pe obiect, care este pisica pe care tocmai ați creat-o. 228 00:14:16,640 --> 00:14:19,020 >> Probabil te va tipări ceva de genul "Hello World! 229 00:14:19,020 --> 00:14:20,000 Miau. " 230 00:14:20,000 --> 00:14:22,110 Destul de drăguț. 231 00:14:22,110 --> 00:14:24,500 Bine, hai să intra în unele detalii 232 00:14:24,500 --> 00:14:30,650 și să vedem ce face exact asta traduce în fiind de programare iOS. 233 00:14:30,650 --> 00:14:36,500 Deci, în iOS programarea fiecare clasă va fi implementat în două fișiere. 234 00:14:36,500 --> 00:14:41,420 Un fișier este aici, care se numește interfața. 235 00:14:41,420 --> 00:14:45,300 Un alt fișier este aici, care este numit de punere în aplicare. 236 00:14:45,300 --> 00:14:48,890 >> De obicei interfața va avea extension.h 237 00:14:48,890 --> 00:14:51,740 așa cum am văzut în biblioteci C. 238 00:14:51,740 --> 00:14:56,340 Și fișier punere în aplicare este Va trebui extension.n. 239 00:14:56,340 --> 00:14:57,260 E un fel de ciudat. 240 00:14:57,260 --> 00:15:01,270 Dar .N înseamnă de fapt .c, nu există nici o diferență fundamentală între cele 241 00:15:01,270 --> 00:15:02,100 doi. 242 00:15:02,100 --> 00:15:06,650 Deci, în acest caz, putem vedea că suntem declararea interfață, Cat: obiect. 243 00:15:06,650 --> 00:15:10,660 244 00:15:10,660 --> 00:15:13,760 Care se numește moștenire. 245 00:15:13,760 --> 00:15:19,170 Suntem practic moștenirea Clasa de pisică din clasa obiect. 246 00:15:19,170 --> 00:15:24,790 Deci, fiecare proprietate și metoda care a fost definit anterior în clasa obiectului 247 00:15:24,790 --> 00:15:28,560 vor fi definite în mod automat într-o clasă pisică, de asemenea. 248 00:15:28,560 --> 00:15:35,900 >> În plus, noi definim culoare, rasa și vârsta, trei variabile. 249 00:15:35,900 --> 00:15:39,360 Acest fapt arata ca ceva ce ați făcut înainte. 250 00:15:39,360 --> 00:15:41,770 Se pare ca struct. 251 00:15:41,770 --> 00:15:44,950 Aceasta este în esență sintaxa de declarare struct, 252 00:15:44,950 --> 00:15:47,710 și că este total corect. 253 00:15:47,710 --> 00:15:51,825 Și pentru că am menționat mai înainte, diferența o struct 254 00:15:51,825 --> 00:15:53,960 și un obiect, una dintre cele mai diferențe fundamentale 255 00:15:53,960 --> 00:15:59,080 este că un obiect are metodă, în timp ce o struct are doar variabile. 256 00:15:59,080 --> 00:16:03,450 Deci, în plus față de proprietățile sau Variabilele care le-am creat pentru obiect, 257 00:16:03,450 --> 00:16:05,700 specificăm o metodă. 258 00:16:05,700 --> 00:16:09,720 >> Să spunem doar că aici avem două metode, una este miau, 259 00:16:09,720 --> 00:16:12,460 altul este mouse-ul Chase. 260 00:16:12,460 --> 00:16:18,600 Probabil Vrem să fie trecerea unui parametru bazat pe metoda noastră precedent 261 00:16:18,600 --> 00:16:20,440 model declarație. 262 00:16:20,440 --> 00:16:22,160 Probabil că vrea să fie trece printr-un șoarece. 263 00:16:22,160 --> 00:16:25,180 Și veți dori, probabil, pentru a reveni un semnificant bool 264 00:16:25,180 --> 00:16:30,010 Daca pisica ta are succes prins mouse-ul sau nu. 265 00:16:30,010 --> 00:16:33,170 >> Aceasta este interfața, dar putem vedea că interfața de fapt 266 00:16:33,170 --> 00:16:35,150 nu face nimic. 267 00:16:35,150 --> 00:16:40,800 Doar spune un program de ceea ce exists-- ceea ce există în clasa pisică. 268 00:16:40,800 --> 00:16:43,640 Deci, pentru ca Programul de a face ceva, 269 00:16:43,640 --> 00:16:46,680 avem nevoie de fisierele de punere în aplicare. 270 00:16:46,680 --> 00:16:51,940 Deci, aici, primul lucru pe care îl facem este evident noi de import interfata. 271 00:16:51,940 --> 00:16:56,470 Dupa ce am de import interfata, vom defini metoda. 272 00:16:56,470 --> 00:17:00,150 >> Să spunem doar că aici miau ar imprima doar din 273 00:17:00,150 --> 00:17:01,740 "Salut Lume!" la consolă. 274 00:17:01,740 --> 00:17:04,319 275 00:17:04,319 --> 00:17:08,460 Și după punerea în aplicare fișier, suntem destul de mult de făcut. 276 00:17:08,460 --> 00:17:14,530 Aceasta este de fapt o clasă declarație pentru o clasă. 277 00:17:14,530 --> 00:17:19,970 Deci, acum, intrebarea devine, cum a face tu declara o variabilă? 278 00:17:19,970 --> 00:17:26,880 Modul în care folosiți o clasă pentru a crea un obiect în obiectivul C este scris aici. 279 00:17:26,880 --> 00:17:30,730 >> Ai specificați în primul rând că aceasta este un pointer pisică, 280 00:17:30,730 --> 00:17:38,700 pentru că fiecare obiect în obiectivul C este în cele din urmă implementat ca un pointer. 281 00:17:38,700 --> 00:17:46,210 Și te sun clasa, le numim ca alloc, care este de fapt malloc, 282 00:17:46,210 --> 00:17:51,220 spune sistemul de operare pe care îl nevoie de spațiu de memorie pentru acest obiect. 283 00:17:51,220 --> 00:17:55,780 După ce că aveți un obiect deja și pe care tocmai l inițializa. 284 00:17:55,780 --> 00:17:56,780 Acesta este doar o convenție. 285 00:17:56,780 --> 00:17:59,390 286 00:17:59,390 --> 00:18:04,410 Știu că e un pic ciudat, dar aceasta este de fapt modul în care Apple a face lucrurile. 287 00:18:04,410 --> 00:18:07,130 >> Alocarea proprietăți este de fapt destul de simplu. 288 00:18:07,130 --> 00:18:09,250 Este foarte asemănător cu ce faci atunci când 289 00:18:09,250 --> 00:18:13,780 te atribuirea unele specifice câmp interiorul struct. 290 00:18:13,780 --> 00:18:16,830 Trebuie doar variabila numele, numele de proprietate, 291 00:18:16,830 --> 00:18:20,140 și să alocați o valoare specifică. 292 00:18:20,140 --> 00:18:24,120 Și de asteptare o metodă este foarte asemănătoare. 293 00:18:24,120 --> 00:18:29,080 Asteptare o metoda este de fapt ce vorbesc despre 294 00:18:29,080 --> 00:18:32,390 pentru apelarea orice metodă în Obiectiv C. 295 00:18:32,390 --> 00:18:36,660 >> Ești trece un obiect, în acest caz va fi myCat, 296 00:18:36,660 --> 00:18:42,490 si tu esti trece numele metodei. 297 00:18:42,490 --> 00:18:47,130 Ca și cum vorbești la obiect, myCat, că ar trebui să miau. 298 00:18:47,130 --> 00:18:48,570 E destul de interesant. 299 00:18:48,570 --> 00:18:52,010 300 00:18:52,010 --> 00:18:55,680 După aceea, există o model de design mai important 301 00:18:55,680 --> 00:18:59,940 că trebuie să vorbim despre înainte de a ajunge la cod efectiv S. 302 00:18:59,940 --> 00:19:03,300 Acest model de proiectare se numește determinate de un eveniment de programare. 303 00:19:03,300 --> 00:19:09,660 Aceasta este, de asemenea, probabil unul dintre cele mai idei fundamentale în programare iOS. 304 00:19:09,660 --> 00:19:14,410 >> Deci, probabil că nu știu ce anume este programarea condus caz, 305 00:19:14,410 --> 00:19:16,990 dar nu e chiar atât de înfricoșător. 306 00:19:16,990 --> 00:19:20,400 Ei bine, de fapt, ai deja făcut asta înainte. 307 00:19:20,400 --> 00:19:24,894 Aceasta este una dintre liniile de probabil ați deja scris în ultimul [inaudibil] 308 00:19:24,894 --> 00:19:26,810 de CS50, google.maps.event.addListener (marker, 309 00:19:26,810 --> 00:19:27,810 "Faceți clic pe", funcția () {}) :. 310 00:19:27,810 --> 00:19:32,410 311 00:19:32,410 --> 00:19:37,620 Prin apel această linie sunteți spune, în esență, calculatorul 312 00:19:37,620 --> 00:19:42,650 că ori de câte ori evenimentul numit "Click" se întâmplă pe încadrare, 313 00:19:42,650 --> 00:19:43,630 utilizați această funcție. 314 00:19:43,630 --> 00:19:46,910 315 00:19:46,910 --> 00:19:50,950 >> Acest lucru este foarte diferit de ceea ce faci în mario.c. 316 00:19:50,950 --> 00:19:56,670 În mario.c rulați doar programul odată, vă oferă o putere, 317 00:19:56,670 --> 00:19:58,590 și ați terminat. 318 00:19:58,590 --> 00:20:02,590 Acestea sunt un fel de unul programe împușcat. 319 00:20:02,590 --> 00:20:05,830 Programe condus evenimente sunt foarte, foarte diferit. 320 00:20:05,830 --> 00:20:10,230 Să ne imaginăm, dacă Facebook este un unul Programul lovitura asta nu e chiar bine. 321 00:20:10,230 --> 00:20:13,750 Tu du-te la Facebook o dată și se face. 322 00:20:13,750 --> 00:20:16,700 Acesta vă oferă unele ieșire și niciodată nu-l am întors. 323 00:20:16,700 --> 00:20:19,380 N-ai luat ceva mai mult. 324 00:20:19,380 --> 00:20:23,880 >> Deci aici, mai ales modelul folosit este 325 00:20:23,880 --> 00:20:26,940 determinate de un eveniment, astfel încât fiecare funcție va 326 00:20:26,940 --> 00:20:31,480 fi capturată bazat pe ceea ce eveniment sa întâmplat. 327 00:20:31,480 --> 00:20:34,670 De exemplu, dacă avem un buton și noi specificați 328 00:20:34,670 --> 00:20:39,870 că ori de câte ori acest buton este apasat, apela funcția numit "Hello World!" 329 00:20:39,870 --> 00:20:47,810 In acest fel putem într-adevăr gestiona logica funcție 330 00:20:47,810 --> 00:20:50,560 flux într-un mod extrem de flexibil. 331 00:20:50,560 --> 00:20:55,840 Utilizatorul poate face sau apela o funcție care a fost deja numit. 332 00:20:55,840 --> 00:20:59,900 Este complet bazat pe ceea ce fac utilizatorii. 333 00:20:59,900 --> 00:21:04,080 >> Deci, putem vedea că acest lucru este de fapt, mult mai bine decât mario.c. 334 00:21:04,080 --> 00:21:07,190 Și o veste bună este că ea e de fapt, nu un concept nou. 335 00:21:07,190 --> 00:21:12,140 Voi ați făcut deja că în ultima problema stabilit. 336 00:21:12,140 --> 00:21:16,640 Deci, în Obiectiv C, există trei diagrame diferite 337 00:21:16,640 --> 00:21:19,030 pentru programarea condus eveniment. 338 00:21:19,030 --> 00:21:21,970 Prima diagrama este numita acțiune țintă, 339 00:21:21,970 --> 00:21:26,990 în cazul în care va obligati un buton presa cu unele functii. 340 00:21:26,990 --> 00:21:31,590 Să spunem că, ori de câte ori faceți clic pe unii buton, te sun unele functii. 341 00:21:31,590 --> 00:21:33,620 Acest lucru este acțiune obiectiv foarte simplu. 342 00:21:33,620 --> 00:21:35,580 >> Al doilea este de fapt cel mai dificil, 343 00:21:35,580 --> 00:21:38,450 se numește delegare pe protocol. 344 00:21:38,450 --> 00:21:41,800 Vom explica că în detaliu mai târziu. 345 00:21:41,800 --> 00:21:44,420 Și a treia cale este de notificare. 346 00:21:44,420 --> 00:21:46,770 Acest lucru nu este de fapt foarte important în ceea ce 347 00:21:46,770 --> 00:21:50,920 așa cum suntem în cauză, deoarece sansa care ai de gând să utilizați notificare 348 00:21:50,920 --> 00:21:53,310 în proiectul dumneavoastră final este destul de scăzut. 349 00:21:53,310 --> 00:21:56,440 Deci, vom sări peste acea parte. 350 00:21:56,440 --> 00:21:59,460 >> Și am de gând să se scufunde în delegație la protocol. 351 00:21:59,460 --> 00:22:02,380 352 00:22:02,380 --> 00:22:04,470 Deci, ce este exact un protocol? 353 00:22:04,470 --> 00:22:06,450 Sau ce anume este un delegație? 354 00:22:06,450 --> 00:22:09,670 Hai sa vorbim despre protocol pentru a începe cu. 355 00:22:09,670 --> 00:22:13,360 Protocoalele nu sunt altceva decât evenimente. 356 00:22:13,360 --> 00:22:19,230 Dar aceste evenimente sunt date pentru tu de Apple pentru a începe cu. 357 00:22:19,230 --> 00:22:22,640 De exemplu, eu nu sunt complet sigur câți dintre voi 358 00:22:22,640 --> 00:22:27,930 voi folosi originale de la Apple app-mail sau contact, 359 00:22:27,930 --> 00:22:32,180 dar de fiecare dată în care se derulează masă și apăsați celula specific 360 00:22:32,180 --> 00:22:36,130 pe masa, care este un eveniment. 361 00:22:36,130 --> 00:22:38,330 >> Și dacă vrei să faci acel eveniment de le 362 00:22:38,330 --> 00:22:40,410 este de fapt un pic mai greu. 363 00:22:40,410 --> 00:22:44,880 Deci, Apple a dat că, chiar la tine astfel încât să puteți pur și simplu utiliza direct 364 00:22:44,880 --> 00:22:49,610 evenimentul de a face ceva pe cont propriu. 365 00:22:49,610 --> 00:22:52,980 Protocoalele sunt de fapt într-adevăr, într-adevăr utilizate pe scară largă 366 00:22:52,980 --> 00:22:58,320 în Obiectiv C. Ei bine, în De fapt, fiecare aplicație 367 00:22:58,320 --> 00:23:00,870 are ceva prins app delegat. 368 00:23:00,870 --> 00:23:06,330 In interiorul delicat este tot al protocoale pentru încărcarea aplicației. 369 00:23:06,330 --> 00:23:12,470 >> Să spunem că nu există un eveniment de aplicație a făcut sarcină. 370 00:23:12,470 --> 00:23:18,200 Deci, ce trebuie să se întâmple după ce ați a creat o aplicație, după ce deschideți aplicația, 371 00:23:18,200 --> 00:23:22,630 după ce închideți aplicația, sau după ai pus iPhone de a dormi. 372 00:23:22,630 --> 00:23:27,480 Acestea sunt toate evenimentele care le are a fost deja dat de tine. 373 00:23:27,480 --> 00:23:34,730 Și inițial în interiorul acestor particule nu va fi nici de punere în aplicare. 374 00:23:34,730 --> 00:23:39,750 Apple tocmai ți-a spus că această funcție se va întâmpla atunci când un eveniment se întâmplă, 375 00:23:39,750 --> 00:23:44,380 dar ce faci cu asta Funcția este complet până la tine. 376 00:23:44,380 --> 00:23:49,290 >> Delegarea este, în principiu spune clasa 377 00:23:49,290 --> 00:23:53,060 că ar trebui să se ocupe de aceste protocoale. 378 00:23:53,060 --> 00:23:55,340 E un pic confuz, dar va fi 379 00:23:55,340 --> 00:23:59,380 mult mai clar atunci când facem codurile s în acțiune. 380 00:23:59,380 --> 00:24:04,760 Delegația la protocol este de fapt o mecanism extrem de robust, în sensul 381 00:24:04,760 --> 00:24:08,160 că dacă facem delegație pentru o anumită clasă, 382 00:24:08,160 --> 00:24:12,400 ne putem descurca, în esență, toate tipurile de evenimente 383 00:24:12,400 --> 00:24:17,040 folosind orice clasă avem, instrument foarte convenabil. 384 00:24:17,040 --> 00:24:21,530 >> Deci, un exemplu rapid pentru delegare pe protocol 385 00:24:21,530 --> 00:24:24,120 va fi ceea ce tocmai am vorbit despre. 386 00:24:24,120 --> 00:24:26,720 387 00:24:26,720 --> 00:24:30,890 Acest protocol specific se numește tableview [inaudibil] selectați rol 388 00:24:30,890 --> 00:24:35,480 la [? index?] [? dribleze. ?] Deci o eveniment care ar fi prins atunci când 389 00:24:35,480 --> 00:24:39,710 apăsați de fapt pe un anumit celulă în tableview ta, 390 00:24:39,710 --> 00:24:43,570 Să spunem că în e-mail-ul sau în app de contact. 391 00:24:43,570 --> 00:24:48,180 >> În interiorul unei funcții nu a existat face inițial nimic. 392 00:24:48,180 --> 00:24:51,950 Funcția nu face nimic în mod implicit. 393 00:24:51,950 --> 00:24:55,540 Dar puteți specifica ceea ce face funcția, 394 00:24:55,540 --> 00:24:59,610 având în vedere ce vrei din aplicația. 395 00:24:59,610 --> 00:25:01,610 Instrument foarte convenabil. 396 00:25:01,610 --> 00:25:06,840 Și cu toate că fiind spuse, eu practic 397 00:25:06,840 --> 00:25:11,430 acopere unele sintaxă foarte de bază și Conceptul fundamental pentru Objective C 398 00:25:11,430 --> 00:25:15,860 programare, și putem face ceva cod s. 399 00:25:15,860 --> 00:25:17,980 Mult mai interesant. 400 00:25:17,980 --> 00:25:21,070 Deci, s cod este de fapt o pic copleșitoare 401 00:25:21,070 --> 00:25:23,330 atunci când îl deschideți pentru prima dată. 402 00:25:23,330 --> 00:25:26,640 >> Un nota rapid, așa că, dacă vrei sa faci dezvoltare iOS, 403 00:25:26,640 --> 00:25:29,630 Am foarte recomandăm să aveți un Mac. 404 00:25:29,630 --> 00:25:33,930 Pentru că faci dezvoltare iOS pe Windows este foarte, foarte greu. 405 00:25:33,930 --> 00:25:37,560 E greu de realizat, dar e foarte greu. 406 00:25:37,560 --> 00:25:40,610 Și tu faci siguranta nu doriți să utilizați g edita. 407 00:25:40,610 --> 00:25:47,950 Deci, în s cod avem mai multe domenii diferite. 408 00:25:47,950 --> 00:25:53,050 Când deschideți prima dată s cod veți vedea o zonă de navigare, 409 00:25:53,050 --> 00:25:57,470 care, practic, vă arată tot fișierele care se află în proiectul curent. 410 00:25:57,470 --> 00:26:03,590 >> Ai o zonă bara de instrumente, care este, în principiu de gestionare opinii, 411 00:26:03,590 --> 00:26:08,570 sau unele puțin rapid Instrumente despre S cod în sine. 412 00:26:08,570 --> 00:26:11,140 Și aceasta este zona real editor. 413 00:26:11,140 --> 00:26:15,900 Aceasta zona este foarte asemănătoare g edita, dar mult mai bine decât g edita. 414 00:26:15,900 --> 00:26:21,150 Și în acest domeniu drept, este denumit în zona de utilitate. 415 00:26:21,150 --> 00:26:27,170 Zona devine foarte la îndemână atunci când creați interfață sau specificând 416 00:26:27,170 --> 00:26:30,070 unele setări rapide pentru aplicația. 417 00:26:30,070 --> 00:26:34,570 >> Și zona de final este de depanare. 418 00:26:34,570 --> 00:26:37,970 Această zonă conține consola. 419 00:26:37,970 --> 00:26:43,170 Deci, ori de câte ori ai spus printf, sau NSLog în cazul nostru, 420 00:26:43,170 --> 00:26:47,330 toate rezultatele sunt va fi imprimat aici. 421 00:26:47,330 --> 00:26:48,260 În regulă? 422 00:26:48,260 --> 00:26:52,090 Cred că putem face foarte repede un exemplu de programare iOS. 423 00:26:52,090 --> 00:26:54,220 Și să deschidă, de fapt cod sus s. 424 00:26:54,220 --> 00:26:57,210 425 00:26:57,210 --> 00:27:01,346 Deci, de fiecare dată când deschideți cod sus s, e O să apară ceva de genul asta. 426 00:27:01,346 --> 00:27:03,220 O să te întreb ce vreți să faceți? 427 00:27:03,220 --> 00:27:06,830 Nu doriți să începeți ceva aleatoriu, un loc de joacă, practic te 428 00:27:06,830 --> 00:27:11,250 poate testa doar cod fără de fapt, angajându-se să orice aplicatie. 429 00:27:11,250 --> 00:27:13,020 >> Nu doriți să creați un nou proiect? 430 00:27:13,020 --> 00:27:16,660 Sau vrei să continuați lucreaza la proiect existent? 431 00:27:16,660 --> 00:27:20,270 În cazul nostru vom pentru a crea un nou proiect. 432 00:27:20,270 --> 00:27:22,980 Deci, e foarte frumos, e Codul are de fapt deja 433 00:27:22,980 --> 00:27:26,820 dat niște șabloane pentru crearea de obiecte. 434 00:27:26,820 --> 00:27:32,680 Dacă vrei să faci un joc, s cod de fapt, are un șablon joc pentru tine, 435 00:27:32,680 --> 00:27:36,890 are aplicații bazate pe pagină, aplicație bazată pe tab. 436 00:27:36,890 --> 00:27:39,280 În acest caz, vom de a face ceva foarte simplu, 437 00:27:39,280 --> 00:27:43,230 și vom utiliza un cerere unică de vedere. 438 00:27:43,230 --> 00:27:48,270 >> După aceea doar ceea ce vrei pentru a apela produsul dvs., și ceea ce este numele tău, 439 00:27:48,270 --> 00:27:52,760 ceea ce este de identificare ta, și ce limbă folosiți. 440 00:27:52,760 --> 00:27:57,060 Aici nu vrem să verifica cu ajutorul Core Data. 441 00:27:57,060 --> 00:28:00,170 Core Data este de fapt un databasing iOS. 442 00:28:00,170 --> 00:28:05,360 Dacă veți face Core Data, s Codul se va defini 443 00:28:05,360 --> 00:28:07,710 o mulțime clase mai complicate pentru tine. 444 00:28:07,710 --> 00:28:12,740 Deci, pentru a păstra totul simplu, suntem doar de gând să se descurce fără bază de date 445 00:28:12,740 --> 00:28:15,290 chiar acum. 446 00:28:15,290 --> 00:28:18,030 >> Problema vom fi utilizați este that-- problema 447 00:28:18,030 --> 00:28:23,770 vom crea este că noi practic vrea să importe Mario de la C 448 00:28:23,770 --> 00:28:25,437 pentru o aplicație iOS. 449 00:28:25,437 --> 00:28:26,645 Deci, haideți să numim că Mario-iOS. 450 00:28:26,645 --> 00:28:31,230 451 00:28:31,230 --> 00:28:34,880 Desigur specificați ceea ce doresc să pună în proiectul dumneavoastră. 452 00:28:34,880 --> 00:28:37,870 Și acolo mergem. 453 00:28:37,870 --> 00:28:41,390 >> Deci, aceasta este un pic copleșitoare, dar aceasta este de fapt 454 00:28:41,390 --> 00:28:43,540 ceea ce tocmai am văzut pe slide-uri. 455 00:28:43,540 --> 00:28:49,710 Și prima zona vedem chiar acum este de fapt configurație proiect. 456 00:28:49,710 --> 00:28:53,390 Deci, tot ceea ce vrei să faci proiect, ce fel de aparat, 457 00:28:53,390 --> 00:28:58,810 hai să spunem ce fel de dispozitiv vrei aplicația să apară pe? 458 00:28:58,810 --> 00:29:01,280 Este iPhone, iPad sau universal? 459 00:29:01,280 --> 00:29:04,660 Deci orientare dispozitiv, toate aceste lucruri. 460 00:29:04,660 --> 00:29:08,490 Nu este foarte important, dar ar putea fi, dar acest lucru 461 00:29:08,490 --> 00:29:11,050 este un loc unde vă configurați proiectul dumneavoastră dacă tu de fapt 462 00:29:11,050 --> 00:29:15,180 doriți să implementați la magazinul Apple. 463 00:29:15,180 --> 00:29:20,420 >> Bine, să ne uităm la ceva care este în interiorul codul nostru. 464 00:29:20,420 --> 00:29:22,360 Să mergem prin navigatorul de fișiere. 465 00:29:22,360 --> 00:29:30,140 Și acestea sunt toate fișierele care deja a venit cu modelul, foarte frumos. 466 00:29:30,140 --> 00:29:35,980 Așa că atunci când am clic pe unul dintre ei asta este ceea ce pare. 467 00:29:35,980 --> 00:29:38,530 Foarte similar cu g edita. 468 00:29:38,530 --> 00:29:41,340 Dar puteți vedea că evidențierea sintaxei este, probabil, 469 00:29:41,340 --> 00:29:42,780 un pic mai frumos. 470 00:29:42,780 --> 00:29:45,610 Și este de fapt mult mai mult puternic decât g de editare. 471 00:29:45,610 --> 00:29:49,970 Și poți complet auto o mulțime de lucruri pentru tine, 472 00:29:49,970 --> 00:29:52,370 așa cum vom vedea foarte repede. 473 00:29:52,370 --> 00:29:54,100 >> Să deschide zona de depanare, de asemenea. 474 00:29:54,100 --> 00:30:02,790 475 00:30:02,790 --> 00:30:07,000 Bine, așa cum se poate vedea, consola este chiar aici. 476 00:30:07,000 --> 00:30:13,840 Aceasta este ceea ce ai de gând pentru a vedea unde ești în printf sau nsloging ceva. 477 00:30:13,840 --> 00:30:17,155 Deci, fără alte formalități, să de fapt compila aplicația și să vedem ce se întâmplă. 478 00:30:17,155 --> 00:30:20,000 479 00:30:20,000 --> 00:30:23,410 O caracteristică esențială pentru s cod, este faptul că cod s 480 00:30:23,410 --> 00:30:25,850 vine cu un simulator de iPhone. 481 00:30:25,850 --> 00:30:29,820 Deci, nu aveți nevoie pentru a avea o iPhone pentru a încerca proiectul dumneavoastră, 482 00:30:29,820 --> 00:30:34,440 s cod poate simula că pentru voi, așa cum se poate vedea chiar acum. 483 00:30:34,440 --> 00:30:36,406 >> E destul de frumos. 484 00:30:36,406 --> 00:30:38,640 Durează un pic bit de timp pentru a compila 485 00:30:38,640 --> 00:30:43,040 și, practic ne-am o aplicație gol, 486 00:30:43,040 --> 00:30:44,640 care de fapt nu face nimic. 487 00:30:44,640 --> 00:30:46,175 Dar compilează. 488 00:30:46,175 --> 00:30:47,380 E destul de minunat. 489 00:30:47,380 --> 00:30:50,200 E mult mai bine decât C, nu? 490 00:30:50,200 --> 00:30:52,130 Bine, atunci hai încercați să adăugați ceva. 491 00:30:52,130 --> 00:30:56,050 492 00:30:56,050 --> 00:31:02,650 Un fișier care este un pic ciudat aici este numit storyboard. 493 00:31:02,650 --> 00:31:08,020 Aceasta este de fapt o mare, facilitate minunat pentru e cod. 494 00:31:08,020 --> 00:31:14,170 Pentru că în s cod, puteți de fapt trage și fixați elementele pe interfața 495 00:31:14,170 --> 00:31:17,430 și se va arăta în mod direct în sus. 496 00:31:17,430 --> 00:31:18,055 Să încercăm asta. 497 00:31:18,055 --> 00:31:21,230 498 00:31:21,230 --> 00:31:27,236 >> Am picătură o etichetă aici, "Hello World !!!" 499 00:31:27,236 --> 00:31:29,740 Putem centru asta. 500 00:31:29,740 --> 00:31:30,970 Destul de rece. 501 00:31:30,970 --> 00:31:33,915 Acum să rulați acest oprire simulare. 502 00:31:33,915 --> 00:31:36,940 503 00:31:36,940 --> 00:31:38,700 Aici avem "Hello World !!!" 504 00:31:38,700 --> 00:31:40,810 Noi nici măcar nu face nici codificare inca. 505 00:31:40,810 --> 00:31:42,750 Ce naiba se întâmplă? 506 00:31:42,750 --> 00:31:45,880 Acest lucru este cât de puternic Interfata Builder poate fi. 507 00:31:45,880 --> 00:31:48,030 Cineva a spus chiar că probabil poți doar 508 00:31:48,030 --> 00:31:52,800 completeze o aplicație fără scriere probabil o mie de linii de cod 509 00:31:52,800 --> 00:31:54,820 doar prin utilizarea Builder Interface. 510 00:31:54,820 --> 00:31:59,680 Dar probabil că nu e cel mai bun mod de a face acest lucru. 511 00:31:59,680 --> 00:32:01,670 >> Acum, hai, de fapt trecem la codificare. 512 00:32:01,670 --> 00:32:04,860 513 00:32:04,860 --> 00:32:08,330 Deci, structura de fișier este de fapt foarte interesant 514 00:32:08,330 --> 00:32:15,610 pentru că, așa cum puteți vedea, există este nici o funcție principală nicăieri. 515 00:32:15,610 --> 00:32:17,466 Vezi? 516 00:32:17,466 --> 00:32:19,340 Așa cum am menționat mai înainte, puteți vedea că acest 517 00:32:19,340 --> 00:32:22,830 este un fișier de punere în aplicare pentru o anumită clasă. 518 00:32:22,830 --> 00:32:25,690 Dar nu există nici nicăieri principal. 519 00:32:25,690 --> 00:32:27,490 Deci, în cazul în care este principalul? 520 00:32:27,490 --> 00:32:31,970 De fapt, există o principală, dar principal este, de fapt ascuns de la tine. 521 00:32:31,970 --> 00:32:34,560 Principal este aici. 522 00:32:34,560 --> 00:32:37,120 Asta pare familiar. 523 00:32:37,120 --> 00:32:41,000 >> Deci, practic ce iOS este de a face în interiorul principal 524 00:32:41,000 --> 00:32:43,540 este că ori de câte ori este principala numita, care este de fapt 525 00:32:43,540 --> 00:32:49,000 ori de câte ori aplicația este executat, ea creeaza un obiect numit AppDelegate. 526 00:32:49,000 --> 00:32:52,980 527 00:32:52,980 --> 00:32:57,350 Așa cum am menționat mai înainte, întregul aplicatie este de fapt un obiect de la sine. 528 00:32:57,350 --> 00:33:02,270 Deci, în acest fel, practic app iOS spune compilatorului 529 00:33:02,270 --> 00:33:05,540 că bine, am de gând să creeze un produs numit AppDelegate, 530 00:33:05,540 --> 00:33:07,620 și care va fi aplicația mea. 531 00:33:07,620 --> 00:33:09,640 Deci, aveți nevoie pentru a merge prin care AppDelegate 532 00:33:09,640 --> 00:33:12,040 si vezi ce face tipul ăla. 533 00:33:12,040 --> 00:33:14,850 Treaba mea este făcut pentru mine. 534 00:33:14,850 --> 00:33:22,070 >> Și în AppDelegate puteți vedea că există unele funcții într-adevăr ciudat, 535 00:33:22,070 --> 00:33:25,290 bine, de fapt metode, că Apple a ți-a dat deja. 536 00:33:25,290 --> 00:33:27,464 Ce sunt acestea? 537 00:33:27,464 --> 00:33:31,010 Acestea sunt de fapt doar protocoale că vorbeam despre. 538 00:33:31,010 --> 00:33:35,670 Deci, acestea sunt evenimente care Apple a te-a dat pentru a începe cu. 539 00:33:35,670 --> 00:33:38,050 Nu este nimic în unele funcțiilor chiar acum, 540 00:33:38,050 --> 00:33:40,820 dar dacă vrem să inițializa ceva pentru aplicația noastră 541 00:33:40,820 --> 00:33:46,140 înainte de a intra în afișarea orice punct de vedere, noi facem asta aici. 542 00:33:46,140 --> 00:33:51,150 >> Puteți citi doar numele și cred Evenimentul este de fapt foarte clar. 543 00:33:51,150 --> 00:33:54,160 544 00:33:54,160 --> 00:33:58,350 Deci, acum principala a creat un obiect de AppDelegate. 545 00:33:58,350 --> 00:34:05,220 Și ce AppDelegate va face este, de fapt, de asemenea, ascuns de la tine. 546 00:34:05,220 --> 00:34:09,250 AppDelegate va incepe încărcarea stocul ViewController. 547 00:34:09,250 --> 00:34:13,170 Deci, se practic de gând să înceapă încărcare de până toate punctele de vedere pe care le au 548 00:34:13,170 --> 00:34:17,500 și chiar face ecranul bazat pe ierarhie. 549 00:34:17,500 --> 00:34:21,280 >> Deci, în acest caz, avem doar o vedere, care este aici. 550 00:34:21,280 --> 00:34:25,060 Așadar, acesta este singurul punct de vedere care va fi numit. 551 00:34:25,060 --> 00:34:28,159 Logica ViewController este chiar aici. 552 00:34:28,159 --> 00:34:32,159 Acesta este codul care de fapt controleaza punctul de vedere doar am văzut. 553 00:34:32,159 --> 00:34:33,679 Bine, hai să facem ceva aici. 554 00:34:33,679 --> 00:34:44,030 555 00:34:44,030 --> 00:34:50,560 Deci, viewDidLoad sună ca un eveniment, când, de fapt, aceasta este, de asemenea, un delegat, 556 00:34:50,560 --> 00:34:52,500 aceasta este, de asemenea, un protocol. 557 00:34:52,500 --> 00:34:56,350 >> Deci, indiferent de punctul de vedere este încărcat, tot în interiorul funcției 558 00:34:56,350 --> 00:34:57,920 se va numi. 559 00:34:57,920 --> 00:35:02,840 În acest caz, ar trebui să vedem "Hello Tianyu! ", Dacă vom rula programul. 560 00:35:02,840 --> 00:35:09,820 561 00:35:09,820 --> 00:35:12,842 Se face un pic mai lent compilarea fișierelor storyboard. 562 00:35:12,842 --> 00:35:15,440 563 00:35:15,440 --> 00:35:18,190 Ei bine, într-adevăr, noi vedem o ieșire pentru el. 564 00:35:18,190 --> 00:35:20,720 E destul de cool. 565 00:35:20,720 --> 00:35:22,000 Acum, hai fapt, nu Mario. 566 00:35:22,000 --> 00:35:25,400 567 00:35:25,400 --> 00:35:27,625 Am de gând să se definească funcționează foarte repede. 568 00:35:27,625 --> 00:35:31,510 569 00:35:31,510 --> 00:35:54,245 marioWithLevels: Rezultatele (int) de nivel. 570 00:35:54,245 --> 00:36:01,120 571 00:36:01,120 --> 00:36:06,410 >> Bine, aceasta este de fapt Awesome facilitate de completare auto s cod. 572 00:36:06,410 --> 00:36:10,680 Deci, atunci când scrie pentru și tastați intra, le-a dat deja modelul 573 00:36:10,680 --> 00:36:12,325 pentru tine, care este destul de rece. 574 00:36:12,325 --> 00:36:50,480 575 00:36:50,480 --> 00:36:52,850 Asta ar trebui să arate într-adevăr familiar pentru voi. 576 00:36:52,850 --> 00:36:55,940 577 00:36:55,940 --> 00:36:59,680 Ne pare rău, asta e vina mea. 578 00:36:59,680 --> 00:37:15,790 579 00:37:15,790 --> 00:37:18,120 Bine, rece. 580 00:37:18,120 --> 00:37:22,710 Această logică ar trebui să arate într-adevăr familiar pentru voi, mai ales doar Mario. 581 00:37:22,710 --> 00:37:26,140 >> Dar noi va tipări acum la consola de fiecare dată, 582 00:37:26,140 --> 00:37:29,280 pentru că vrem să păstrăm într-un fel urmări ceea ce se imprimă. 583 00:37:29,280 --> 00:37:31,810 Mergem de utilizat Rezultate cumva mai târziu, 584 00:37:31,810 --> 00:37:35,010 pentru a afișa imprimare în rezultat pentru utilizator. 585 00:37:35,010 --> 00:37:37,730 Deci, în loc suntem doar nslogging totul, 586 00:37:37,730 --> 00:37:42,410 care suntem stocarea tot într-un rezultat funcție de apel, 587 00:37:42,410 --> 00:37:44,070 dar logica este exact la fel. 588 00:37:44,070 --> 00:37:48,030 589 00:37:48,030 --> 00:37:51,800 După ce l, ne-am duce la doar imprima rezultatele noastre. 590 00:37:51,800 --> 00:37:59,330 591 00:37:59,330 --> 00:38:04,970 >> Și aici, în loc de imprimarea mele nume, vom apela o funcție. 592 00:38:04,970 --> 00:38:15,340 593 00:38:15,340 --> 00:38:18,090 Să vedem ce se întâmplă. 594 00:38:18,090 --> 00:38:21,240 Hopa, evident. 595 00:38:21,240 --> 00:38:24,320 Avem un frumos mic piramidă aici. 596 00:38:24,320 --> 00:38:28,370 Aceasta este de fapt C, suntem doar manipularea unde te sun o funcție 597 00:38:28,370 --> 00:38:30,010 și cum o funcție arata. 598 00:38:30,010 --> 00:38:31,560 Nu e nimic diferit. 599 00:38:31,560 --> 00:38:34,040 Dar aceasta este de fapt nu foarte interesant aici, 600 00:38:34,040 --> 00:38:37,500 pentru că noi nu s-au vazut nimic din aplicația iPhone. 601 00:38:37,500 --> 00:38:42,120 >> Deci, dacă aveți de fapt un iPhone app-- dacă aveți de fapt Mario iOS dreapta 602 00:38:42,120 --> 00:38:45,080 acum, nu te duci a vedea ceva care 603 00:38:45,080 --> 00:38:49,450 are nimic de-a face cu Mario, deoarece toate aceste rezultate într-o consolă 604 00:38:49,450 --> 00:38:51,620 sunt ascunse de la un utilizator. 605 00:38:51,620 --> 00:38:53,850 Aceasta este ceea ce vezi, care este "Hello World !!!" 606 00:38:53,850 --> 00:38:55,720 Nu e bun. 607 00:38:55,720 --> 00:39:03,090 Acum să încercăm să facem utilizator vedea exact ceea ce ne imprimarea. 608 00:39:03,090 --> 00:39:06,000 Deci, nu avem nevoie să mai eticheta. 609 00:39:06,000 --> 00:39:09,800 Să încercăm și dau seama ceva altceva care ar putea fi util. 610 00:39:09,800 --> 00:39:12,140 >> Nu este de fapt una element care se numește 611 00:39:12,140 --> 00:39:16,460 câmp de text, care ar putea fi foarte util pentru noi. 612 00:39:16,460 --> 00:39:19,880 Se afișează de fapt o regiune de text care poate fi editat. 613 00:39:19,880 --> 00:39:22,320 Așa că pare foarte util. 614 00:39:22,320 --> 00:39:23,810 Acum, să trageți și plasați-l. 615 00:39:23,810 --> 00:39:26,880 616 00:39:26,880 --> 00:39:32,670 Wow, avem o vedere de text în opinia noastră, într-adevăr de lux. 617 00:39:32,670 --> 00:39:35,430 Asta e un pic prea mare. 618 00:39:35,430 --> 00:39:38,150 Să facem o mică. 619 00:39:38,150 --> 00:39:40,290 Pune-l în centru. 620 00:39:40,290 --> 00:39:43,760 Fă o mai mică, de asemenea. 621 00:39:43,760 --> 00:39:50,110 >> Acum avem o vedere de text, pe care am putea fi folosit pentru a afișa rezultatul final. 622 00:39:50,110 --> 00:39:52,860 Dar acum e cu siguranta nu va merge 623 00:39:52,860 --> 00:39:56,970 pentru că nu există no-- ViewController ne-am 624 00:39:56,970 --> 00:40:03,010 definit nu știe că există o vedere de text acolo. 625 00:40:03,010 --> 00:40:06,550 Deci, avem nevoie de un fel link vizualizare text tocmai am 626 00:40:06,550 --> 00:40:11,660 create cu clasa care a venit deja cu noi. 627 00:40:11,660 --> 00:40:14,860 >> Modul în care facem asta este de fapt într-adevăr magic. 628 00:40:14,860 --> 00:40:18,190 Deci, deschide storyboard. 629 00:40:18,190 --> 00:40:22,220 Există o special [inaudibil] numit [? asistent?] [neauzit]. 630 00:40:22,220 --> 00:40:25,190 Când faceți clic pe asta, e va deschide două fișiere. 631 00:40:25,190 --> 00:40:29,425 Una este o clasă, iar celălalt este o vedere corespunzătoare pentru aceasta. 632 00:40:29,425 --> 00:40:31,920 E foarte, foarte util. 633 00:40:31,920 --> 00:40:35,950 Și hai să trece prin fișierul .h. 634 00:40:35,950 --> 00:40:39,110 Controlul, aici [inaudibil] logică. 635 00:40:39,110 --> 00:40:47,280 Controlul Apăsați și trageți vedere text în declarația. 636 00:40:47,280 --> 00:40:48,780 Vom numi asta outputView. 637 00:40:48,780 --> 00:40:52,189 638 00:40:52,189 --> 00:40:53,670 Conectează-te. 639 00:40:53,670 --> 00:40:59,420 Deci, aici ne-am declarat un nou proprietate de clasa noastră ViewController. 640 00:40:59,420 --> 00:41:02,300 Iar noua proprietate este doar punctul de vedere textului 641 00:41:02,300 --> 00:41:05,000 am creat în clădire de interfață. 642 00:41:05,000 --> 00:41:07,990 Deci, în acest fel am putea acces toate datele 643 00:41:07,990 --> 00:41:13,630 și manipula tot ceea ce este în interiorul ecranul de ieșire, care este minunat. 644 00:41:13,630 --> 00:41:19,260 >> Deci, în codul nostru actual, hai sa facem ceva cu ea. 645 00:41:19,260 --> 00:41:23,810 Deci, de data aceasta, când suntem ca tipărire în rezultatul final pentru Mario, 646 00:41:23,810 --> 00:41:28,020 suntem în care nu logare nimic. 647 00:41:28,020 --> 00:41:30,080 Adică am putea păstra declarația de logare. 648 00:41:30,080 --> 00:41:41,490 Pe lângă asta, trimite citire ne-am 649 00:41:41,490 --> 00:41:47,622 creat la ecranul de ieșire, care este un UI TextView doar am creat. 650 00:41:47,622 --> 00:41:48,746 Acum, să vedem ce se întâmplă. 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 Avem o piramidă în aplicația chiar acum. 654 00:41:59,130 --> 00:42:06,720 >> Astfel, utilizatorul poate vedea producția noastră pentru că am copiat de ieșire din codul nostru 655 00:42:06,720 --> 00:42:08,045 la interfața noastră. 656 00:42:08,045 --> 00:42:10,950 E destul de bine. 657 00:42:10,950 --> 00:42:14,990 Nu e de fapt că Derby pentru că noi can-- 658 00:42:14,990 --> 00:42:18,250 Toate aplicația este de a face este arătând o piramidă pentru tine, 659 00:42:18,250 --> 00:42:20,520 și nu există nimic care le puteți face despre el. 660 00:42:20,520 --> 00:42:22,330 Nu e deosebit de interesant. 661 00:42:22,330 --> 00:42:27,840 Deci, acum hai să facem un buton că va șterge punctele de vedere. 662 00:42:27,840 --> 00:42:30,290 Se pare că un buton va fi de ajutor. 663 00:42:30,290 --> 00:42:33,270 Drag and drop. 664 00:42:33,270 --> 00:42:33,900 Button unul. 665 00:42:33,900 --> 00:42:36,730 666 00:42:36,730 --> 00:42:37,320 Button doi. 667 00:42:37,320 --> 00:42:49,170 668 00:42:49,170 --> 00:42:52,052 >> Așa că atunci când am faceți clic pe stânga buton, ecranul ar trebui să dispară. 669 00:42:52,052 --> 00:42:53,635 Nu ar trebui să fie nimic pe ecran. 670 00:42:53,635 --> 00:42:56,970 Și când am faceți clic pe butonul din dreapta, Mario, 671 00:42:56,970 --> 00:42:59,740 vizualizarea va apărea din nou. 672 00:42:59,740 --> 00:43:05,510 Deci, în acest fel vom face, de asemenea, Chestii magie, de control și trageți 673 00:43:05,510 --> 00:43:08,740 la declarația de clasa în director-- asistent 674 00:43:08,740 --> 00:43:11,600 în vizualizatorul asistent. 675 00:43:11,600 --> 00:43:18,620 În acest caz avem de a specifica că ar trebui să fie o acțiune. 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 >> Deci, aici am creat deja o acțiune numită clearMario, 679 00:43:26,830 --> 00:43:34,210 care este metoda care va fi numit ori de câte ori apăsați butonul limpede. 680 00:43:34,210 --> 00:43:41,030 Deci, în fapt codul nostru, hai să pune textul de ieșire și punctul de vedere ieșire 681 00:43:41,030 --> 00:43:44,620 în nimic, și în acest fel se va par a fi clare. 682 00:43:44,620 --> 00:43:47,500 683 00:43:47,500 --> 00:43:57,230 În plus, sa cream o altă metodă numită runMario. 684 00:43:57,230 --> 00:44:00,140 685 00:44:00,140 --> 00:44:03,436 Oh, scuze, că nu ar trebui să fie o proprietate. 686 00:44:03,436 --> 00:44:12,107 687 00:44:12,107 --> 00:44:13,940 Bine, asta ar trebui să fie o acțiune la fel de bine. 688 00:44:13,940 --> 00:44:25,780 689 00:44:25,780 --> 00:44:34,740 >> Și când această funcție este numit, doar vom rula Mario zece. 690 00:44:34,740 --> 00:44:37,620 691 00:44:37,620 --> 00:44:39,780 Sperăm că va fi bine. 692 00:44:39,780 --> 00:44:41,120 Are compila? 693 00:44:41,120 --> 00:44:43,920 Da. 694 00:44:43,920 --> 00:44:45,090 Acum avem un punct de vedere. 695 00:44:45,090 --> 00:44:46,560 Avem o ieșire. 696 00:44:46,560 --> 00:44:50,040 Și hai să vedem ce se întâmplă. 697 00:44:50,040 --> 00:44:52,590 Asta a plecat. 698 00:44:52,590 --> 00:44:54,500 E din nou. 699 00:44:54,500 --> 00:44:57,620 Deci, aici am specificat ce fel de funcție 700 00:44:57,620 --> 00:45:00,400 se va numi atunci când am tastați în ceva, 701 00:45:00,400 --> 00:45:03,160 când am apăsați un buton specific. 702 00:45:03,160 --> 00:45:07,890 Acesta este în esență sistem acțiune țintă 703 00:45:07,890 --> 00:45:12,510 pentru un eveniment Programarea în Obiectiv C. 704 00:45:12,510 --> 00:45:15,030 >> Pe lângă asta, nu e foarte interesant 705 00:45:15,030 --> 00:45:19,810 pentru că nu putem schimba cu adevărat cât de mare va fi piramidei, 706 00:45:19,810 --> 00:45:23,640 deci, probabil, vrem să cumva obține o intrare de la utilizator 707 00:45:23,640 --> 00:45:29,490 și de a schimba înălțimea piramidă bazat pe ceea ce au de ieșire. 708 00:45:29,490 --> 00:45:32,900 Deci, vom face asta. 709 00:45:32,900 --> 00:45:38,720 Deci, de data aceasta, când numim runMario, noi nu numim doar pe Mario direct. 710 00:45:38,720 --> 00:46:06,280 711 00:46:06,280 --> 00:46:07,000 Denumirea Asta e. 712 00:46:07,000 --> 00:46:22,180 713 00:46:22,180 --> 00:46:23,700 >> Delegat. 714 00:46:23,700 --> 00:46:25,160 Acest lucru este foarte interesant. 715 00:46:25,160 --> 00:46:26,720 Ce este un delegat? 716 00:46:26,720 --> 00:46:28,950 Am de gând să pună sine aici. 717 00:46:28,950 --> 00:46:31,038 Și vom vedea ce inseamna asta mai târziu. 718 00:46:31,038 --> 00:46:46,380 719 00:46:46,380 --> 00:46:51,120 Deci, aici am creat practic un exemplu specific numit unei alerte de UI 720 00:46:51,120 --> 00:46:52,210 vedere. 721 00:46:52,210 --> 00:46:54,440 Un punct de vedere alertă UI este practic ce vrei 722 00:46:54,440 --> 00:46:58,940 a se vedea de fiecare data ceva POP și vă cere de intrare, 723 00:46:58,940 --> 00:47:03,080 ca ce se va întâmpla atunci când sunteți încercarea să cumpere ceva pe un App Store. 724 00:47:03,080 --> 00:47:14,250 >> În plus, după ce a crea o, vom arăta doar alerta. 725 00:47:14,250 --> 00:47:20,090 726 00:47:20,090 --> 00:47:22,568 Bine, hai să rapid încercare va fi că munca sau nu. 727 00:47:22,568 --> 00:47:31,105 728 00:47:31,105 --> 00:47:32,140 Asta e foarte misto. 729 00:47:32,140 --> 00:47:55,370 730 00:47:55,370 --> 00:47:59,120 Acum, haideți să creeze un efectiv câmp de introducere pentru semnalarea UI. 731 00:47:59,120 --> 00:48:01,170 Acesta este modul în care facem asta. 732 00:48:01,170 --> 00:48:07,490 Și ar trebui să avem o vedere de intrare pentru alerta. 733 00:48:07,490 --> 00:48:09,020 Foarte misto. 734 00:48:09,020 --> 00:48:12,330 Să spunem doar 10. 735 00:48:12,330 --> 00:48:14,900 >> Nu face nimic dreapta acum că apelul efectiv 736 00:48:14,900 --> 00:48:17,770 nu s-au schimbat pentru executarea mario. 737 00:48:17,770 --> 00:48:23,470 Deci, aceasta a devenit un pic pic cam ciudat pentru că ori de câte ori 738 00:48:23,470 --> 00:48:30,790 am apăsați un buton jos, ori de câte ori apăsați un buton în ecranul de alertă, 739 00:48:30,790 --> 00:48:35,560 ceva trebuie să se întâmple, dar aceasta nu se întâmplă. 740 00:48:35,560 --> 00:48:37,220 Cum prind? 741 00:48:37,220 --> 00:48:41,280 Cum știm că un utilizator a respins o vedere de alertă 742 00:48:41,280 --> 00:48:45,630 și a intrat deja un număr, pentru că chiar acum nimic nu se intampla de fapt. 743 00:48:45,630 --> 00:48:50,450 >> Ei bine, ați ghicit corect, delegare. 744 00:48:50,450 --> 00:48:55,440 Deci, în plus față de toate aceste declarații, 745 00:48:55,440 --> 00:49:03,190 avem nevoie pentru a adăuga o nouă delegație la a numit-o UI vedere alertă delegat. 746 00:49:03,190 --> 00:49:06,440 Așa că fiecare interacțiune sau eveniment 747 00:49:06,440 --> 00:49:10,190 că vom avea cu scopul de alertă UI 748 00:49:10,190 --> 00:49:14,100 va fi manipulat de clasa noastră, de asemenea. 749 00:49:14,100 --> 00:49:26,297 >> Deci, în plus față de faptul că, va fi Alertă pe butonul vedere faceți clic pe la index. 750 00:49:26,297 --> 00:49:34,260 751 00:49:34,260 --> 00:49:37,730 Acest lucru este atins. 752 00:49:37,730 --> 00:49:42,020 Deci, în acest caz, avem already-- așa că avem 753 00:49:42,020 --> 00:49:46,210 aflat un protocol care se va ocupa de evenimentul când 754 00:49:46,210 --> 00:49:51,320 facem clic pe butonul Done pe ecranul de alertă. 755 00:49:51,320 --> 00:49:55,976 Deci, de fiecare dată când respingerea vedere alertă, aceasta ar trebui să se întâmple. 756 00:49:55,976 --> 00:49:57,350 Lasă-mă să-l testeze foarte repede. 757 00:49:57,350 --> 00:50:16,220 758 00:50:16,220 --> 00:50:19,300 Ei bine, într-adevăr, am ajuns aici. 759 00:50:19,300 --> 00:50:22,210 >> Deci, aici, ceea ce nu se va de fapt obține este de fapt 760 00:50:22,210 --> 00:50:43,120 obține the-- Așa că vrem să ieșim textul pe care o avem în prealabil 761 00:50:43,120 --> 00:50:45,350 a intrat în ecranul de alertă. 762 00:50:45,350 --> 00:50:48,505 Și se bazează pe text, suntem va fi afisata Mario. 763 00:50:48,505 --> 00:50:52,336 764 00:50:52,336 --> 00:50:55,480 Acest lucru dovedește foarte repede în cazul în care chiar funcționează sau nu. 765 00:50:55,480 --> 00:50:59,476 Deci, în acest caz, dacă ne-am de intrare, să zicem, 10, ar trebui să vedem 10. 766 00:50:59,476 --> 00:51:02,740 767 00:51:02,740 --> 00:51:05,210 >> Foarte bine, avem un număr de aici. 768 00:51:05,210 --> 00:51:06,470 E destul de bine. 769 00:51:06,470 --> 00:51:16,840 Acum, ultimul pas va be-- So Ultima etapă trebuie să facem chiar acum 770 00:51:16,840 --> 00:51:21,100 este doar o sun Mario cu Nivelul bazează pe intrările 771 00:51:21,100 --> 00:51:23,270 care le-am pus în vedere de alertă. 772 00:51:23,270 --> 00:51:26,920 Deci, avem nevoie pentru a converti acest șir în iOS. 773 00:51:26,920 --> 00:51:33,820 774 00:51:33,820 --> 00:51:35,496 Overflow Static este foarte minunat. 775 00:51:35,496 --> 00:51:44,930 776 00:51:44,930 --> 00:51:51,182 Și apoi numim doar de sine valoare marioWithLevels. 777 00:51:51,182 --> 00:51:54,550 778 00:51:54,550 --> 00:51:56,284 Să vedem va ca locul de muncă sau nu de fapt. 779 00:51:56,284 --> 00:51:59,070 780 00:51:59,070 --> 00:52:01,550 >> Ne dat deja o piramidă. 781 00:52:01,550 --> 00:52:04,785 Să încercăm să schimbe înălțimea. 782 00:52:04,785 --> 00:52:06,530 Asta chiar funcționează. 783 00:52:06,530 --> 00:52:07,610 E destul de cool. 784 00:52:07,610 --> 00:52:10,420 Așa că acum poți doar intrare orice valoare doriti. 785 00:52:10,420 --> 00:52:12,440 Să spunem doar că patru. 786 00:52:12,440 --> 00:52:14,260 Asta e destul de minunat. 787 00:52:14,260 --> 00:52:17,090 Deci, aceasta este, în principiu un exemplu foarte repede 788 00:52:17,090 --> 00:52:23,170 pentru modul de a crea un proiect în s cod și cum să sârmă foarte repede în sus 789 00:52:23,170 --> 00:52:26,220 unele evenimente și funcții foarte simplu. 790 00:52:26,220 --> 00:52:28,840 >> Astfel, sursa se întâmplă care urmează să fie pus online mai târziu. 791 00:52:28,840 --> 00:52:33,400 Deci, dacă sunteți interesat în modul în care funcționează iOS Mario, 792 00:52:33,400 --> 00:52:38,360 Am de gând să pună exact la fel Proiecte pe site-ul CS50 mai târziu. 793 00:52:38,360 --> 00:52:41,260 Suntem practic terminat cu vară, iar înainte de a ne duce la 794 00:52:41,260 --> 00:52:45,190 Vreau doar să vă punctul voi să unele resurse într-adevăr minunat că 795 00:52:45,190 --> 00:52:47,550 sunt disponibile on-line. 796 00:52:47,550 --> 00:52:52,270 >> Evident documentația Apple a va fi de foarte mare ajutor. 797 00:52:52,270 --> 00:52:57,630 Dar, în plus, am ales recomanda patru surse, cod de școală, 798 00:52:57,630 --> 00:53:02,120 casă în copac, AppCoda și WWDC video. 799 00:53:02,120 --> 00:53:07,270 Școală cod și casa copac sunt două site-uri on-line Educația, 800 00:53:07,270 --> 00:53:10,210 care se concentrează în mod specific pe inginerie software. 801 00:53:10,210 --> 00:53:16,930 Mai ales pentru cod școală, ei au tutorial foarte bine pe iOS. 802 00:53:16,930 --> 00:53:19,550 >> Acesta este un exemplu foarte rapid pentru el. 803 00:53:19,550 --> 00:53:22,980 Ei creează de fapt un adevărat cute-- uita-te la acest mic drăguț iPhone 804 00:53:22,980 --> 00:53:24,920 Omule acolo, e destul de minunat. 805 00:53:24,920 --> 00:53:31,010 Iar modul în care explică Obiectiv C sintaxa este perfect limpede. 806 00:53:31,010 --> 00:53:32,230 Casa din copac este același. 807 00:53:32,230 --> 00:53:34,660 Și AppCoda este un forum. 808 00:53:34,660 --> 00:53:38,130 Este de fapt un blog care a fost rulat de un obiectiv C într-adevăr cu experiență 809 00:53:38,130 --> 00:53:39,120 programator. 810 00:53:39,120 --> 00:53:43,950 Și toate aceste tutoriale din AppCoda sunt destul de scurt și ușor de implementat, 811 00:53:43,950 --> 00:53:45,390 foarte recomandat. 812 00:53:45,390 --> 00:53:47,700 >> Și dacă sunteți un dezvoltator, cu siguranta merge verifica 813 00:53:47,700 --> 00:53:55,660 cum videoclipuri WWDC unde puteți afla despre cele mai recente programare iOS 814 00:53:55,660 --> 00:53:58,250 tehnici, API-uri și biblioteci. 815 00:53:58,250 --> 00:54:02,850 Așa că este destul de mult aceasta pentru seminar. 816 00:54:02,850 --> 00:54:03,820 Mulțumesc foarte mult. 817 00:54:03,820 --> 00:54:08,040 Și sper că te distrezi crea propria aplicație iOS. 818 00:54:08,040 --> 00:54:09,302