1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar] [iOS: Scrierea Apps Ca un Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Universitatea Harvard] 3 00:00:04,000 --> 00:00:08,000 [Acest lucru este CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> În regulă, toată lumea, bine ați venit la iOS: Scrierea Apps ca un Boss. 5 00:00:12,000 --> 00:00:16,000 Acest seminar se va concentra pe scrierea aplicații pentru iPhone 6 00:00:16,000 --> 00:00:19,000 și, la rândul său scris, aplicații pentru iPad, și astfel vom practic de gând să se plimbe prin 7 00:00:19,000 --> 00:00:23,000 un cuplu diferite exemple de cum să faci o aplicație, un joc simplu ca Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 sau daca esti mai interesat în a face o aplicatie ca un fel de cititor de stiri 9 00:00:26,000 --> 00:00:30,000 sau ceva care interacționează cu Internetul voi vorbi despre asta la fel de bine. 10 00:00:30,000 --> 00:00:32,000 Iată ordinea de zi scurta noastră. 11 00:00:32,000 --> 00:00:36,000 >> Aplicații IOS sunt scrise într-un limbaj numit Objective-C, 12 00:00:36,000 --> 00:00:39,000 și astfel încât acesta este un pic similar cu C, dar nu într-adevăr, la toate, 13 00:00:39,000 --> 00:00:41,000 asa ca vom vorbi un pic despre limba în sine 14 00:00:41,000 --> 00:00:45,000 si apoi cum să construiască aplicații pentru iPhone cu ajutorul acestui program de aplicație numit XCode, 15 00:00:45,000 --> 00:00:48,000 care, dacă nu l-ați descărcat încă nu ezitați să începeți descărcarea acum. 16 00:00:48,000 --> 00:00:50,000 E mai multe gigabytes. 17 00:00:50,000 --> 00:00:54,000 Ar trebui să fie gratuit pe App Store, așa că va trebui să aibă un Mac 18 00:00:54,000 --> 00:00:57,000 execută în mod ideal, cea mai recentă versiune a OS X. 19 00:00:57,000 --> 00:00:59,000 Dacă nu ești, nici o problema. 20 00:00:59,000 --> 00:01:02,000 Avem Mac-uri in centru științific disponibil pentru utilizarea de către dvs. 21 00:01:02,000 --> 00:01:05,000 cu XCode instalat, și așa că nu ezitați să folosească cele pentru dezvoltare. 22 00:01:05,000 --> 00:01:07,000 Dacă doriți să faceți o aplicație, dar nu au un Mac, nu vă faceți griji. 23 00:01:07,000 --> 00:01:09,000 Exista o multime de resurse campus pentru asta. 24 00:01:09,000 --> 00:01:15,000 Și așa, atunci vom acoperi 2 exemple mai mari de aplicații diferite pe care le puteți face. 25 00:01:15,000 --> 00:01:19,000 Obiectiv-C este ceea ce se numește punct de vedere tehnic un set de super-C. 26 00:01:19,000 --> 00:01:24,000 Asta înseamnă că orice cod C este, de asemenea, valabilă Objective-C cod. 27 00:01:24,000 --> 00:01:29,000 Asta înseamnă că am un fel de canal inregistrat pe unele caracteristici suplimentare la C. 28 00:01:29,000 --> 00:01:33,000 Unele dintre aceste caracteristici nu includ fi nevoie să scrie vreodată malloc din nou, mulțumim lui Dumnezeu, 29 00:01:33,000 --> 00:01:36,000 nici să vă faceți griji cu privire la aceste indicii stupide și să le dea libertatea și toate chestiile alea 30 00:01:36,000 --> 00:01:40,000 ai urât despre C, si e un fel de mers în Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Acum, Objective-C are, de asemenea, o bibliotecă standard mult mai mare, 32 00:01:43,000 --> 00:01:47,000 deci nu e funcționalitate mult mai mult veți obține pentru interior gratuit de Objective-C. 33 00:01:47,000 --> 00:01:50,000 Amintiți-vă atunci când am fost scris, PHP am constatat că ne-am dus la 34 00:01:50,000 --> 00:01:54,000 acest mic limbă la biblioteca gigant din toate aceste lucruri nebunești care le puteți face. 35 00:01:54,000 --> 00:01:56,000 Același lucru se întâmplă în iOS. 36 00:01:56,000 --> 00:01:59,000 E obiecte pentru lucruri cum ar fi calendarul budist, și într-adevăr nimic 37 00:01:59,000 --> 00:02:05,000 vă puteți gândi, eventual, de, probabil, există deja în punerea în aplicare Objective-C a lui. 38 00:02:05,000 --> 00:02:08,000 Obiectivul parte din Obiectiv-C este ceva de afiliere 39 00:02:08,000 --> 00:02:11,000 numita Object-Oriented Programming. 40 00:02:11,000 --> 00:02:14,000 Aceasta este un fel de un concept nou, dar de fapt, cea mai mare parte am învățat 41 00:02:14,000 --> 00:02:17,000 o mulțime de aceste concepte deja. 42 00:02:17,000 --> 00:02:19,000 Ideea din spatele Programarea Orientata pe Obiect este că ai de gând să structureze 43 00:02:19,000 --> 00:02:23,000 o mulțime de codul dumneavoastră în jurul valorii de aceste lucruri numite clase, 44 00:02:23,000 --> 00:02:26,000 iar aceste clase sunt glorificați cu adevărat struct. 45 00:02:26,000 --> 00:02:30,000 În interiorul unei structuri noi, practic spus aici este un lucru, 46 00:02:30,000 --> 00:02:32,000 iar acest lucru poate avea membri. 47 00:02:32,000 --> 00:02:35,000 De exemplu, un nod într-o listă legată ar putea avea alte lucruri 48 00:02:35,000 --> 00:02:38,000 ca o valoare, un pointer la nodul următor din listă, 49 00:02:38,000 --> 00:02:44,000 și împreună că indicatorul și că valoarea compus acest exemplu cea a unui struct. 50 00:02:44,000 --> 00:02:47,000 Clasele sunt foarte asemănătoare, cu excepția 51 00:02:47,000 --> 00:02:50,000 clase pot avea, de asemenea, funcții în interiorul lor. 52 00:02:50,000 --> 00:02:54,000 Când ne-am declarat-o struct, am putea spune doar int n sau * nod următor. 53 00:02:54,000 --> 00:02:57,000 >> Acum, cu Objective-C, putem pune de fapt funcții 54 00:02:57,000 --> 00:02:59,000 în interiorul acestor lucruri. 55 00:02:59,000 --> 00:03:03,000 Un alt lucru pe care clasele pot face este că ei pot moșteni date din alte clase. 56 00:03:03,000 --> 00:03:07,000 De exemplu, vom fi uitat la o grămadă de built-in Objective-C clase. 57 00:03:07,000 --> 00:03:11,000 Unul dintre ele ar putea fi clasa care reprezintă punctul de vedere pentru un ecran, 58 00:03:11,000 --> 00:03:14,000 și așa mai departe prin a spune vreau să pună în aplicare opinia mea 59 00:03:14,000 --> 00:03:18,000 spunem practic pe cineva de la Apple, oamenii probabil într-adevăr frumos, 60 00:03:18,000 --> 00:03:21,000 a scris această clasă pentru mine, și se ocupă de lucruri cum ar fi afișarea butoanelor 61 00:03:21,000 --> 00:03:25,000 sau să facă ecran, și ne-ar fi cu adevărat îndurerat 62 00:03:25,000 --> 00:03:28,000 să pună în aplicare toate că funcționalitatea noi înșine, și așa mai departe prin simpla 63 00:03:28,000 --> 00:03:31,000 moștenind de date putem spune tot ce ai făcut în această clasă 64 00:03:31,000 --> 00:03:34,000 De asemenea, doresc interiorul clasa mea, și apoi am de gând să fac alte chestii, 65 00:03:34,000 --> 00:03:37,000 pună în aplicare o aplicație anume. 66 00:03:37,000 --> 00:03:40,000 Asta ce înseamnă cuvântul moștenire. Vom vedea un exemplu mai concret. 67 00:03:40,000 --> 00:03:42,000 >> Și, în sfârșit, cheia cu Programarea Orientata pe Obiect este faptul că 68 00:03:42,000 --> 00:03:45,000 aceasta duce la încapsulare de date. 69 00:03:45,000 --> 00:03:48,000 În unele dintre probleme noastre seturi am putea avea aceste variabile mari, globale 70 00:03:48,000 --> 00:03:51,000 și GLOBALS pretutindeni, și că e modul în care vom urmări de stat. 71 00:03:51,000 --> 00:03:55,000 Cu clasele putem începe incapsularea informații privilegiate a unui obiect. 72 00:03:55,000 --> 00:03:58,000 Dacă avem un ecran pe aplicația noastră, nu avem nevoie de a avea niciun fel de date de la 73 00:03:58,000 --> 00:04:01,000 un alt ecran în interiorul aplicația noastră de faptul că, 74 00:04:01,000 --> 00:04:04,000 și așa mai departe prin incapsularea lucrurile în cadrul claselor acest fapt duce 75 00:04:04,000 --> 00:04:08,000 de proiectare cod mult mai bine, iar acest lucru este posibil cu unele dintre caracteristicile suplimentare 76 00:04:08,000 --> 00:04:11,000 Obiectiv-C. 77 00:04:11,000 --> 00:04:15,000 Va avertizez, sintaxa pentru Objective-C este banane. 78 00:04:15,000 --> 00:04:19,000 Este ca și cum nimic nu am văzut până acum, 79 00:04:19,000 --> 00:04:22,000 deci este un pic de o curbă de învățare obtinerea utilizate pentru a 80 00:04:22,000 --> 00:04:24,000 ce naiba înseamnă? 81 00:04:24,000 --> 00:04:27,000 Dar odată ce te trecut că curbă de învățare inițială este foarte, foarte buna 82 00:04:27,000 --> 00:04:29,000 pentru a începe să scrieți aplicații. 83 00:04:29,000 --> 00:04:33,000 >> Pentru a declara o clasa, să spun aici este clasa mea, ea există, 84 00:04:33,000 --> 00:04:35,000 și, poate, aici sunt unele lucruri pe care am de gând să definească mai târziu, 85 00:04:35,000 --> 00:04:38,000 Am de gând să spun @ interfață. 86 00:04:38,000 --> 00:04:41,000 Am de gând să spun @ interfață. Am de gând să dea un nume clasa mea. 87 00:04:41,000 --> 00:04:43,000 Și apoi mai târziu în altă parte am de gând să spun @ sfârșit, 88 00:04:43,000 --> 00:04:46,000 și totul în între interfața @ și sfârșitul @ 89 00:04:46,000 --> 00:04:48,000 va fi clasa mea. 90 00:04:48,000 --> 00:04:51,000 Care va fi ceea ce este în interiorul dosarele noastre. H. 91 00:04:51,000 --> 00:04:55,000 La fel ca în C dosarele noastre. H în esență spus aici sunt unele lucruri care vor exista. 92 00:04:55,000 --> 00:04:57,000 Eu nu neapărat vă spun ceea ce fac ei încă, 93 00:04:57,000 --> 00:04:59,000 dar compilatorul trebuie să știe că ele există. 94 00:04:59,000 --> 00:05:04,000 Mai târziu, în interiorul nostru. M. fișiere, deoarece m-pentru Objective-C 95 00:05:04,000 --> 00:05:08,000 este unde vom merge de fapt, pentru a defini ceea ce fac aceste clase. 96 00:05:08,000 --> 00:05:11,000 La fel ca dosarele noastre. C, am oferit o punere în aplicare pentru funcțiile. 97 00:05:11,000 --> 00:05:15,000 În interiorul nostru. M. fișier vom spune aici este ceea ce toate funcțiile 98 00:05:15,000 --> 00:05:18,000 interiorul clasa mea-ce toți fac. 99 00:05:18,000 --> 00:05:22,000 Și, în sfârșit, în interiorul unei structuri am putea spune în interiorul acestor acolade 100 00:05:22,000 --> 00:05:25,000 int, n sau nod * următor 101 00:05:25,000 --> 00:05:28,000 și în Objective-C vom folosi cuvântul cheie @ proprietate, 102 00:05:28,000 --> 00:05:31,000 și aceasta este ceea ce se întâmplă pentru a defini proprietățile, 103 00:05:31,000 --> 00:05:36,000 sau funcțiile non-care sunt o parte din orele mele. 104 00:05:36,000 --> 00:05:40,000 >> Apelarea funcțiilor în Objective-C este, de asemenea, bananele. 105 00:05:40,000 --> 00:05:43,000 Când ne-am declarat funcții în C am spus ceva de genul int foo 106 00:05:43,000 --> 00:05:46,000 și deschis paren și apoi a dat-o listă de argumente. 107 00:05:46,000 --> 00:05:51,000 Aceasta este ceea ce declara metode sau funcții arata ca in Objective-C. 108 00:05:51,000 --> 00:05:54,000 Dacă vreau să declare o funcție sau o metodă de 109 00:05:54,000 --> 00:05:58,000 în cazul în care vreau să spun metodă este de fapt doar o funcție care este un membru al unei clase, 110 00:05:58,000 --> 00:06:01,000 deci un fel de interschimbabile, dar nu chiar, 111 00:06:01,000 --> 00:06:03,000 astfel încât interiorul metoda mea vreau să creați o nouă metodă. 112 00:06:03,000 --> 00:06:06,000 O să se întoarcă nimic, asa ca va fi de tip void. 113 00:06:06,000 --> 00:06:08,000 Acesta este tipul returnat de funcția mea. 114 00:06:08,000 --> 00:06:11,000 Acum avem Parens aici pentru că-nu știu. 115 00:06:11,000 --> 00:06:14,000 Următorul va fi numele de funcția mea, 116 00:06:14,000 --> 00:06:17,000 și apoi în cele din urmă, avem un punct și virgulă la fel cum am avut-o în C. 117 00:06:17,000 --> 00:06:19,000 Ce este nou aici este tipul ăsta aici. 118 00:06:19,000 --> 00:06:22,000 Aceasta este de fapt necesar cratimă, și ceea ce spune aceasta este că 119 00:06:22,000 --> 00:06:26,000 această metodă trebuie să fie numit aici pe o instanță a unei clase. 120 00:06:26,000 --> 00:06:29,000 >> Dupa ce am declarat struct noastre, probabil, a spus ceva de genul 121 00:06:29,000 --> 00:06:32,000 struct nod N, și că de fapt a creat 122 00:06:32,000 --> 00:06:35,000 sau instanțiate una dintre acele struct, astfel că am putea începe de fapt de lucru 123 00:06:35,000 --> 00:06:38,000 cu ceea ce este în interiorul acestuia, astfel încât această linie înseamnă că trebuie să ne 124 00:06:38,000 --> 00:06:41,000 instantia clasa la fel ca noi instantiat ca struct 125 00:06:41,000 --> 00:06:43,000 înainte de a putea apela această metodă pe ea. 126 00:06:43,000 --> 00:06:46,000 Dacă vreau să începeți să adăugați argumente pentru a metodele mele 127 00:06:46,000 --> 00:06:48,000 devine chiar mai multe banane. 128 00:06:48,000 --> 00:06:50,000 Aici e numele meu metoda. 129 00:06:50,000 --> 00:06:53,000 Apoi am de gând să aibă un colon, iar după această colon se spune aici vine unele argumente. 130 00:06:53,000 --> 00:06:56,000 Această metodă are un singur argument. 131 00:06:56,000 --> 00:06:59,000 Tipul de argumentul său este un int, iar numele acestui argument 132 00:06:59,000 --> 00:07:03,000 sau variabilă pe care am de gând să începeți să utilizați interiorul metoda este am sunat. 133 00:07:03,000 --> 00:07:05,000 Din nou, aceasta este metoda. Este nevoie de un singur argument. 134 00:07:05,000 --> 00:07:10,000 >> Dacă doriți să începeți să adăugați mai multe argumente devine banane mai mult 135 00:07:10,000 --> 00:07:13,000 în care am această colon care spune că aici vine lista mea de argumente. 136 00:07:13,000 --> 00:07:15,000 Acest prim argument este un număr întreg. 137 00:07:15,000 --> 00:07:17,000 Acum, acest al doilea argument este interesant. 138 00:07:17,000 --> 00:07:20,000 Variabilă care am de gând să fie utilizând interiorul funcția mea 139 00:07:20,000 --> 00:07:23,000 f se numește, așa interiorul funcția mea am putea spune 140 00:07:23,000 --> 00:07:25,000 f + = 1 sau ceva de genul. 141 00:07:25,000 --> 00:07:30,000 Acest lucru aici este de fapt un argument cheie pentru care sau parametru. 142 00:07:30,000 --> 00:07:34,000 La fel cum am avut perechi de chei și valori ceva de genul JSON sau tablouri asociative 143 00:07:34,000 --> 00:07:37,000 Obiectiv-C a luat decizia de a spune, bine, doar pentru ca e foarte clar 144 00:07:37,000 --> 00:07:39,000 atunci când apelați o metodă de ce toate aceste parametri sunt 145 00:07:39,000 --> 00:07:41,000 Sunt de fapt de gând să numi-le pe toate. 146 00:07:41,000 --> 00:07:45,000 Atunci când apelați o metodă, veți spune, de fapt andFloat, 147 00:07:45,000 --> 00:07:47,000 si apoi vei trece inch 148 00:07:47,000 --> 00:07:50,000 >> Interesant, aceasta nu este numit, dar toate celelalte sunt parametrii, 149 00:07:50,000 --> 00:07:53,000 Deci, dacă am avut un argument treia am putea spune andFloat 150 00:07:53,000 --> 00:07:56,000 și un alt float și așa mai departe. 151 00:07:56,000 --> 00:08:01,000 Când m-am numi aceste metode este de banane curs, 152 00:08:01,000 --> 00:08:04,000 așa că, dacă am un obiect, și am definit o metoda numita foo, 153 00:08:04,000 --> 00:08:09,000 și vreau să-l numesc, mai degrabă decât a spune deschis foo / Parens inchide 154 00:08:09,000 --> 00:08:11,000 Am de gând să deschidă o paranteză. 155 00:08:11,000 --> 00:08:13,000 Iată numele de metoda mea. 156 00:08:13,000 --> 00:08:17,000 Am de gând să închidă suport, iar acest lucru este obiect am sunat-o pe. 157 00:08:17,000 --> 00:08:20,000 Amintiți-vă, toate aceste metode există în clasele 158 00:08:20,000 --> 00:08:23,000 deoarece clasele pot avea metode definite în interiorul ei. 159 00:08:23,000 --> 00:08:26,000 >> Aici am creat un obiect arbitrar a unor clase, 160 00:08:26,000 --> 00:08:28,000 și acest lucru este sintaxa pentru a face asta. 161 00:08:28,000 --> 00:08:31,000 Există 2 pași pentru a crea un obiect. 162 00:08:31,000 --> 00:08:34,000 Primul pas este să spun că vreau să aloce spațiu. 163 00:08:34,000 --> 00:08:37,000 Acesta este echivalentul unui malloc. Noi nu trebuie să spunem mai malloc. 164 00:08:37,000 --> 00:08:42,000 Am renuntat m, a făcut-o alloc, și a înlocuit c.., Cu. M.. 165 00:08:42,000 --> 00:08:47,000 După ceva alloc ne vom atunci trebuie să-l inițializa. 166 00:08:47,000 --> 00:08:49,000 Practic, atunci când creați obiectele pe care s-ar putea dori să aibă o anumită logică 167 00:08:49,000 --> 00:08:53,000 care execută atunci când acestea sunt create, astfel încât să puteți trece în unele valori implicite 168 00:08:53,000 --> 00:08:57,000 sau ceva de genul asta, si asa această metodă de inițializare este ceea ce creează de fapt obiectul. 169 00:08:57,000 --> 00:08:59,000 Noi aloca primul spațiu, la fel cum am făcut-o în C, 170 00:08:59,000 --> 00:09:04,000 și apoi l-am inițializa, care poate sau nu poate face un întreg lot. 171 00:09:04,000 --> 00:09:07,000 Apoi ne intoarcem chestia asta într-un obiect o. 172 00:09:07,000 --> 00:09:09,000 E o stea aici, pentru că acesta este un pointer punct de vedere tehnic, 173 00:09:09,000 --> 00:09:12,000 dar nu vă faceți griji, nu sunt indicii că mare lucru în Objective-C mai. 174 00:09:12,000 --> 00:09:15,000 >> Acum ne-am instantiat această clasă numit NSObject, 175 00:09:15,000 --> 00:09:19,000 și acest lucru este doar o clasă aleatoare care Apple are. 176 00:09:19,000 --> 00:09:22,000 Am instanțiată asta, iar acum am o instanță a acestei clase 177 00:09:22,000 --> 00:09:25,000 în acest obiect o, astfel că înseamnă că, dacă am definit 178 00:09:25,000 --> 00:09:29,000 aceste metode am putea să le numesc așa. 179 00:09:29,000 --> 00:09:31,000 În mod similar, în cazul în care am vrut să sun o metoda cu un singur argument, 180 00:09:31,000 --> 00:09:34,000 astfel încât acesta este metoda bar, care ia un argument, 181 00:09:34,000 --> 00:09:38,000 și aici este Baz: metoda qux, astfel încât aceasta durează 2 argumente. 182 00:09:38,000 --> 00:09:44,000 Aceasta este o funcție de asteptare de pe acest obiect o. 183 00:09:44,000 --> 00:09:46,000 Sens? 184 00:09:46,000 --> 00:09:50,000 Sintaxa ar trebui să facă sens, dar un fel de te obișnuiești cu ea. 185 00:09:50,000 --> 00:09:54,000 >> Bine, hai sa vorbim despre câteva lucruri care sunt construite în Objective-C 186 00:09:54,000 --> 00:09:56,000 care nu au fost neapărat construit în C. 187 00:09:56,000 --> 00:09:59,000 În C am un fel de avut de a face cu siruri de caractere ca aceste tablouri stupide, 188 00:09:59,000 --> 00:10:01,000 și a ajuns foarte enervant. 189 00:10:01,000 --> 00:10:04,000 Obiectiv-C are cele construit în toate pentru noi, și este construit în 190 00:10:04,000 --> 00:10:06,000 folosind această clasă numit NSString. 191 00:10:06,000 --> 00:10:10,000 Când vreau să creați un NSString avem sintaxă mai arcane. 192 00:10:10,000 --> 00:10:15,000 Mai degrabă decât a spune "CS50" spunem @ "CS50" 193 00:10:15,000 --> 00:10:17,000 și aceasta este doar sintaxa de declarare siruri de caractere în Objective-C. 194 00:10:17,000 --> 00:10:21,000 Acest lucru este extrem de ușor să uităm, asa ca nu. 195 00:10:21,000 --> 00:10:24,000 Acum, odată ce am aceasta, acesta este un sir, dar observați 196 00:10:24,000 --> 00:10:26,000 e de fapt doar un obiect. 197 00:10:26,000 --> 00:10:30,000 I-am spus NSString, ceea ce înseamnă că instantiat clasa 198 00:10:30,000 --> 00:10:32,000 numit NSString, care altcineva a scris pentru mine, 199 00:10:32,000 --> 00:10:35,000 si au fost foarte frumos despre el, și așa mai departe acum 200 00:10:35,000 --> 00:10:37,000 Pot să încep de asteptare metode pe ea. 201 00:10:37,000 --> 00:10:40,000 Dacă eu numesc lungimea metoda pe acest obiect e 202 00:10:40,000 --> 00:10:43,000 se va întoarce la mine lungimea șirului. 203 00:10:43,000 --> 00:10:45,000 Acest lucru este la fel ca în strlen C. 204 00:10:45,000 --> 00:10:47,000 Acest lucru ar reveni 4. 205 00:10:47,000 --> 00:10:51,000 >> În mod similar, o altă metodă s-ar putea dori să le pese de asta characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Aceasta este o metodă care spune pe acest șir e 207 00:10:54,000 --> 00:10:57,000 Vreau să te caracterul zero, 208 00:10:57,000 --> 00:10:59,000 și astfel aceasta ar întoarce la mine caracterul c, 209 00:10:59,000 --> 00:11:02,000 și există o grămadă mai multe dintre aceste metode pe care le puteți foarte ușor pe Google. 210 00:11:02,000 --> 00:11:07,000 Documentația Apple este mare, iar noi vom lua o privire la faptul că într-un pic. 211 00:11:07,000 --> 00:11:09,000 Acestea sunt siruri de caractere. 212 00:11:09,000 --> 00:11:11,000 De asemenea, am tablouri variabile de mărime construit inch 213 00:11:11,000 --> 00:11:13,000 Amintiți-vă în C atunci când ne-am declarat-o matrice 214 00:11:13,000 --> 00:11:16,000 am avut să vă spun că aveți 5 elemente, sfârșitul poveștii. 215 00:11:16,000 --> 00:11:18,000 Când am ajuns la JavaScript și PHP am putea începe 216 00:11:18,000 --> 00:11:20,000 a face lucruri cum ar fi adăugarea de elemente sau mutarea elementelor. 217 00:11:20,000 --> 00:11:22,000 Putem face același lucru în Objective-C. 218 00:11:22,000 --> 00:11:26,000 Mai degrabă decât să creeze o matrice în mod normal C 219 00:11:26,000 --> 00:11:30,000 avem din nou o altă clasă numită NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Există, de asemenea NSArray, 221 00:11:33,000 --> 00:11:35,000 și acest lucru se întâmplă pentru a îngloba practic niște matrice. 222 00:11:35,000 --> 00:11:38,000 Aceasta spune primul lucru pe care vreau să fac este vreau să aloce 223 00:11:38,000 --> 00:11:41,000 spațiu pentru o gamă nouă, și după ce l-am aloce 224 00:11:41,000 --> 00:11:43,000 Apoi am nevoie să-l inițializa. 225 00:11:43,000 --> 00:11:45,000 Din nou, de asteptare doar aceste 2 metode. 226 00:11:45,000 --> 00:11:48,000 Acum, acest lucru înseamnă că în interiorul acestui obiect un 227 00:11:48,000 --> 00:11:50,000 Am un array gol stând acolo. 228 00:11:50,000 --> 00:11:54,000 Dacă vreau să adaug ceva la această matrice, pot apela metoda addObject. 229 00:11:54,000 --> 00:11:59,000 Vreau să adăugați un obiect la o matrice, și vreau să adăugați șir CS50. 230 00:11:59,000 --> 00:12:02,000 Dacă aș fi vrut să elimine invers, că pot spune că am dori să 231 00:12:02,000 --> 00:12:09,000 eliminarea obiectului la primul loc pe matrice sau o opoziție. 232 00:12:09,000 --> 00:12:11,000 >> Sens? 233 00:12:11,000 --> 00:12:14,000 Bine, ai un fel de te obișnuiești cu acest lucru suport pătrat. 234 00:12:14,000 --> 00:12:18,000 Apropo, în interiorul unui lot de biblioteci Apple veți vedea acest NS. 235 00:12:18,000 --> 00:12:21,000 NS înseamnă de fapt pasul următor, care a fost una dintre primele companii de Steve Jobs, 236 00:12:21,000 --> 00:12:24,000 și că este în cazul în care într-adevăr a început să scrie o mulțime de cod 237 00:12:24,000 --> 00:12:27,000 ca un fel de baza pentru Mac OS X și toate alte lucruri, 238 00:12:27,000 --> 00:12:32,000 și astfel această NS este un fel de această moștenire frumos striga la una dintre societățile anterioare 239 00:12:32,000 --> 00:12:34,000 înapoi, atunci când Apple a fost primul incepand de afară. 240 00:12:34,000 --> 00:12:36,000 E peste tot. 241 00:12:36,000 --> 00:12:41,000 Să aruncăm o privire la o mai holistică Objective-C de exemplu. 242 00:12:41,000 --> 00:12:44,000 Iată-mă în interiorul XCode. 243 00:12:44,000 --> 00:12:47,000 Pentru a ajunge aici, am descarcat prima XCode din App Store, 244 00:12:47,000 --> 00:12:50,000 a deschis-o, iar apoi m-am dus până aici la dosar, 245 00:12:50,000 --> 00:12:54,000 aici la proiect nou, și apoi. 246 00:12:54,000 --> 00:12:57,000 După ce am face asta am toate aceste opțiuni de ceea ce vreau pentru a crea, 247 00:12:57,000 --> 00:12:59,000 și astfel vom arunca o privire la aceste opțiuni mai târziu, 248 00:12:59,000 --> 00:13:03,000 dar doar pentru acest exemplu, pentru că nu suntem de fapt de gând să aibă o aplicație încă, 249 00:13:03,000 --> 00:13:06,000 Am venit aici, i-am spus instrument de linie de comandă, 250 00:13:06,000 --> 00:13:09,000 și aceasta este o aplicație pe care am putea fugi de la linia de comandă 251 00:13:09,000 --> 00:13:12,000 la fel ca am fost difuzate de la C. 252 00:13:12,000 --> 00:13:16,000 Asta e modul în care am creat acest proiect, iar asa ca acum eu sunt aici, 253 00:13:16,000 --> 00:13:20,000 Deci să ne uităm mai întâi la acest dosar, iar acest lucru ar trebui să arate destul de familiar. 254 00:13:20,000 --> 00:13:24,000 Am un nume int. Nu e prietenul meu argc, argv meu alte prietene. 255 00:13:24,000 --> 00:13:30,000 Și astfel putem vedea că acesta este punctul de intrare pentru primul meu Objective-C aplicație. 256 00:13:30,000 --> 00:13:32,000 Aici putem ignora acest lucru pentru acum. 257 00:13:32,000 --> 00:13:35,000 Acest lucru este, în principiu niște chestii de management de memorie pe care într-adevăr nu va 258 00:13:35,000 --> 00:13:37,000 vreodată trebuie să vă faceți griji. 259 00:13:37,000 --> 00:13:39,000 >> Să ne uităm la acest bloc primul aici. 260 00:13:39,000 --> 00:13:46,000 Aceasta prima linie, dacă spun Student * Alice = [[alloc pentru studenti] init] Ce e asta faci? 261 00:13:46,000 --> 00:13:50,000 Acest elev prima data aici, aceasta este, probabil, o clasă. 262 00:13:50,000 --> 00:13:54,000 Aceasta nu este o clasa care Apple a scris, dar este o clasa care am scris. 263 00:13:54,000 --> 00:13:57,000 Primul lucru pe care vreau să fac este vreau să aloce spațiu pentru un student nou, 264 00:13:57,000 --> 00:14:00,000 și apoi vreau să-l inițializați, astfel încât această dă-mi înapoi 265 00:14:00,000 --> 00:14:05,000 acest obiect elev nou, iar eu stocarea asta intr-o variabila numita Alice. 266 00:14:05,000 --> 00:14:07,000 În cazul în care această clasă au venit de la? 267 00:14:07,000 --> 00:14:12,000 Ei bine, aici pe partea stanga toate acestea sunt de diferite fisiere din interiorul meu proiect. 268 00:14:12,000 --> 00:14:16,000 Putem vedea aici am o Student.h și un Student.m. 269 00:14:16,000 --> 00:14:20,000 Fișierul h.., Amintiți-vă, este locul unde am declar toate lucrurile 270 00:14:20,000 --> 00:14:22,000 că va exista în cadrul clasei. 271 00:14:22,000 --> 00:14:25,000 >> Să aruncăm o privire la asta. 272 00:14:25,000 --> 00:14:29,000 În regulă, aici avem această interfață @, iar acest lucru spune că vine aici 273 00:14:29,000 --> 00:14:33,000 declarațiile de tot ceea ce va exista în clasa mea. 274 00:14:33,000 --> 00:14:36,000 Atunci am un colon. Atunci am chestia asta NSObject. 275 00:14:36,000 --> 00:14:40,000 Acest lucru înseamnă că de colon pic moștenire am discutat un pic mai devreme. 276 00:14:40,000 --> 00:14:43,000 Acest lucru spune totul o NSObject poate face 277 00:14:43,000 --> 00:14:46,000 în cazul în care este NSObject această clasă scris de altcineva, 278 00:14:46,000 --> 00:14:50,000 tot ceea ce poate face acest NSObject vreau să fie în măsură să facă acest lucru. 279 00:14:50,000 --> 00:14:54,000 Prin a spune: NSObject asta înseamnă că eu practic 280 00:14:54,000 --> 00:14:58,000 moștenit toate funcționalitățile de o alta clasa. 281 00:14:58,000 --> 00:15:02,000 Asta chiar mi-a dat o gramada de metode diferite și proprietăți pe care le pot utiliza. 282 00:15:02,000 --> 00:15:05,000 Aici jos creez 2 proprietăți. 283 00:15:05,000 --> 00:15:08,000 Asta înseamnă că studentul meu, în cazul în care acest lucru ar fi o struct, acestea ar fi 2 lucruri 284 00:15:08,000 --> 00:15:11,000 interiorul struct mea, astfel încât fiecare elev are un nume 285 00:15:11,000 --> 00:15:14,000 că este un șir, și un student are, de asemenea, un grad, 286 00:15:14,000 --> 00:15:17,000 care este un int. 287 00:15:17,000 --> 00:15:23,000 >> În cele din urmă, aici am de gând să creeze o metodă de studentul meu. 288 00:15:23,000 --> 00:15:26,000 L-am sunat metoda mea, initWithName, și este nevoie de un singur argument, 289 00:15:26,000 --> 00:15:31,000 și că acest argument este un șir, și am numit-o numi. 290 00:15:31,000 --> 00:15:35,000 Acum, să ne uităm la modul în care am implementat de fapt, această clasă. 291 00:15:35,000 --> 00:15:38,000 Aici, acum sunt în interiorul dosarul meu m., 292 00:15:38,000 --> 00:15:40,000 m pentru punerea în aplicare, cred. 293 00:15:40,000 --> 00:15:44,000 Am punerea în aplicare mea, partea mea, și aici este locul unde am de fapt, definirea 294 00:15:44,000 --> 00:15:47,000 ceea ce face initWithName. 295 00:15:47,000 --> 00:15:50,000 Am initWithName, numele parametrului meu, iar apoi acest 296 00:15:50,000 --> 00:15:53,000 în cazul în care este de fapt creez un student, 297 00:15:53,000 --> 00:15:56,000 și astfel încât acesta este un pic criptic, dar aceasta este un fel de șabloane 298 00:15:56,000 --> 00:15:58,000 pe care doriți să le includeți în constructorilor tale. 299 00:15:58,000 --> 00:16:02,000 Această funcție de inițializare aici, initWithName, este un tip de constructor. 300 00:16:02,000 --> 00:16:05,000 Te construirea de fapt un obiect nou elev 301 00:16:05,000 --> 00:16:07,000 și trimiterea poate unele date conținute de acesta. 302 00:16:07,000 --> 00:16:11,000 Primul lucru pe care vreau să fac este vreau să sun init pe chestia asta super. 303 00:16:11,000 --> 00:16:15,000 >> Amintiți-vă că atunci când am spus din nou aici, în fișierul. H 304 00:16:15,000 --> 00:16:21,000 că tot ceea ce are un NSObject un student are, de asemenea. 305 00:16:21,000 --> 00:16:24,000 Asta înseamnă că atunci când am crea un elev ceea ce am, de asemenea, trebuie sa faci este 306 00:16:24,000 --> 00:16:28,000 asigurați-vă că NSObject că eu sunt moștenirea toate că datele de la 307 00:16:28,000 --> 00:16:32,000 este, de asemenea, inițializat corect. 308 00:16:32,000 --> 00:16:36,000 Ce am nevoie să spun este aceasta este, de fapt super-va pentru a face referire la clasa de mamă 309 00:16:36,000 --> 00:16:39,000 că mă moștenește de la, așa că vreau să fiu sigur că inițializa 310 00:16:39,000 --> 00:16:43,000 tot ceea ce am, în funcție de înainte de a începe încercarea să-l folosească. 311 00:16:43,000 --> 00:16:46,000 Apoi, în cazul în care acest lucru este initializat corect la fel ca în cazul în care spune malloc 312 00:16:46,000 --> 00:16:50,000 nu intoarce null atunci eu pot începe stabilirea unor proprietăți. 313 00:16:50,000 --> 00:16:54,000 >> În JavaScript și PHP am acest cuvânt cheie numit aceasta, 314 00:16:54,000 --> 00:16:58,000 și acest lucru face referire la instanța curentă a unei clase. 315 00:16:58,000 --> 00:17:00,000 În Obiectiv-C numim acest sine. 316 00:17:00,000 --> 00:17:04,000 Când spun self.name, ceea ce înseamnă că obiectul 317 00:17:04,000 --> 00:17:07,000 Eu doar i-am spus atunci când a creat alloc elev init, 318 00:17:07,000 --> 00:17:09,000 care este de gând să-mi dea înapoi un obiect. 319 00:17:09,000 --> 00:17:12,000 Asta înseamnă că vreau să setați numele acestui obiect 320 00:17:12,000 --> 00:17:15,000 pentru tot ce tocmai a trecut inch 321 00:17:15,000 --> 00:17:18,000 La fel ca în C, am acces la membrii cu acest punct, 322 00:17:18,000 --> 00:17:21,000 astfel self.name spune numele obiectului studentului 323 00:17:21,000 --> 00:17:24,000 este acum va fi tot ceea ce tocmai a trecut inch 324 00:17:24,000 --> 00:17:28,000 Și astfel în cele din urmă, pot să-l întoarcă, așa că am obține de fapt, înapoi ceva. 325 00:17:28,000 --> 00:17:30,000 >> Întrebări? 326 00:17:30,000 --> 00:17:34,000 Ok, deci acest sine = super-init, 327 00:17:34,000 --> 00:17:37,000 dacă nu înțeleg în totalitate moștenirea lucruri nu vă faceți griji. 328 00:17:37,000 --> 00:17:40,000 Doar știi că, dacă vrei vreodată să vă face propriul metoda de inițializare doar 329 00:17:40,000 --> 00:17:42,000 face acest lucru, și veți fi bine să plec. 330 00:17:42,000 --> 00:17:44,000 Da >> [Student]. Ce dacă medie de sine? 331 00:17:44,000 --> 00:17:49,000 Acest lucru înseamnă că atunci când ne malloc ceva mereu am verificat dacă a fost egal cu zero, 332 00:17:49,000 --> 00:17:51,000 și dacă a fost nulă, apoi am ieșit. 333 00:17:51,000 --> 00:17:55,000 Acesta este același lucru, pentru că, dacă acest null revine, atunci, probabil, vom merge la vina seg 334 00:17:55,000 --> 00:17:57,000 în cazul în care vom începe încearcă să-l manipuleze. 335 00:17:57,000 --> 00:18:01,000 Asta e clasa noastră student. 336 00:18:01,000 --> 00:18:03,000 Asta înseamnă că ne putem inițializa studenții noștri într-unul din cele două moduri. 337 00:18:03,000 --> 00:18:08,000 Dacă eu spun alloc elev, init nu mă folosind metoda pe care am scris, 338 00:18:08,000 --> 00:18:11,000 și în loc să pot spune pur și simplu alice.name, 339 00:18:11,000 --> 00:18:14,000 și acum am de gând să se stabilească faptul că numele proprietății. 340 00:18:14,000 --> 00:18:17,000 >> În mod similar, în cazul în care doresc să folosească această metodă initWithName 341 00:18:17,000 --> 00:18:20,000 Eu pot spune pur și simplu alloc, iar apoi, mai degrabă decât a spune init 342 00:18:20,000 --> 00:18:24,000 Am de gând să sun că metoda pe care am creat-o, și am de gând să treacă în Bob. 343 00:18:24,000 --> 00:18:30,000 În acest moment, această Bob obiect are un nume egal cu Bob. 344 00:18:30,000 --> 00:18:35,000 Bine, aici eu sunt, folosind ca NSMutableArray pe care ne-am uitat la mai devreme. 345 00:18:35,000 --> 00:18:38,000 Sunt alocarea space.Then am initializarea o matrice nouă. 346 00:18:38,000 --> 00:18:40,000 Am de gând să adăugați 2 lucruri la ea. 347 00:18:40,000 --> 00:18:43,000 Această matrice are acum obiecte de studenți. 348 00:18:43,000 --> 00:18:46,000 Observați că nicăieri nu am să spun acest lucru este o matrice de studenți. 349 00:18:46,000 --> 00:18:48,000 I-am spus că e un tablou, perioadă. 350 00:18:48,000 --> 00:18:50,000 Apoi am pot pune orice în interiorul acestuia pe care vreau. 351 00:18:50,000 --> 00:18:52,000 Aici am 2 obiecte. 352 00:18:52,000 --> 00:18:56,000 >> În cele din urmă, am aici un alt obiect, acest TF. 353 00:18:56,000 --> 00:18:59,000 Peste aici, în TF.h practic același lucru. 354 00:18:59,000 --> 00:19:01,000 Sunt moștenirea de la NSObject, și prin modul în care, 355 00:19:01,000 --> 00:19:03,000 Atunci când creați clase care acest lucru este tot făcut pentru tine, 356 00:19:03,000 --> 00:19:06,000 acest tip de interfață șabloane. 357 00:19:06,000 --> 00:19:08,000 Acesta are o proprietate de studenți. 358 00:19:08,000 --> 00:19:15,000 Am un cuplu de metode de aici, că nu face cu adevărat o mulțime, 359 00:19:15,000 --> 00:19:18,000 și pentru ca inseamna după ce am creat acest obiect TF 360 00:19:18,000 --> 00:19:23,000 Eu pot suna la acest grad metodă pe ea ca asta. 361 00:19:23,000 --> 00:19:26,000 Orice întrebări cu privire la Objective-C sintaxa înainte de a ne începe să se deplasează în unele mai mult 362 00:19:26,000 --> 00:19:30,000 interesant aplicații chestii de dezvoltare? 363 00:19:30,000 --> 00:19:34,000 >> Bine, asa ca hai sa face de fapt, o aplicație pentru iPhone. 364 00:19:34,000 --> 00:19:39,000 Clasele de bază pe care le veți folosi în interiorul app de iPhone sunt numite controlere vezi, 365 00:19:39,000 --> 00:19:42,000 și un controler de vizualizare reprezintă de fapt un singur ecran 366 00:19:42,000 --> 00:19:46,000 interiorul aplicația, așa că, dacă eu sunt pe app muzica, de exemplu, 367 00:19:46,000 --> 00:19:50,000 un controlor vedere ar putea reprezenta punctul de vedere în care am vedea toate melodiile pe iPhone-ul meu. 368 00:19:50,000 --> 00:19:53,000 Un alt controler vedere ar putea fi atunci când fac clic pe o melodie și începe să joci l 369 00:19:53,000 --> 00:19:55,000 sau ca eu sunt de foraj în jos, în artiști. 370 00:19:55,000 --> 00:19:59,000 Fiecare dintre aceste ecrane diferite ar putea fi reprezentat ca un controler de vedere diferit, 371 00:19:59,000 --> 00:20:04,000 și un controler de vizualizare este de fapt doar o clasa care spune cum functioneaza acest ecran. 372 00:20:04,000 --> 00:20:07,000 Lucrurile în interiorul unui controler de vedere, vom avea proprietăți, 373 00:20:07,000 --> 00:20:10,000 asa lucruri ca un buton va fi o proprietate de controlor de punctul nostru de vedere. 374 00:20:10,000 --> 00:20:13,000 >> Suntem, de asemenea, de gând să aibă metode, iar acestea sunt în esență Stivuitoare eveniment. 375 00:20:13,000 --> 00:20:16,000 Această metodă spune atunci când apăsați acest buton 376 00:20:16,000 --> 00:20:19,000 Vreau să fac ceva, și, în sfârșit, din nou, 377 00:20:19,000 --> 00:20:24,000 vom folosi acest cuvânt cheie auto pentru a accesa instanța curentă. 378 00:20:24,000 --> 00:20:29,000 Pentru a construi interfețe în iOS este de fapt foarte, foarte usor. 379 00:20:29,000 --> 00:20:32,000 Ei au această tragere frumos și de interfață meniurile numit Interface Builder, 380 00:20:32,000 --> 00:20:37,000 și cele 2 concepte de bază pe care sarme pana dvs. de Objective-C pentru Interface Builder 381 00:20:37,000 --> 00:20:40,000 sunt IBOutlet și IBAction. 382 00:20:40,000 --> 00:20:44,000 Un IBOutlet pur și simplu spune că dacă declară o proprietate care este un buton, 383 00:20:44,000 --> 00:20:47,000 și doriți să-l cârlig până la ceva în UI-ul real, 384 00:20:47,000 --> 00:20:49,000 ai de gând să spun că e la o priză. 385 00:20:49,000 --> 00:20:51,000 În mod similar, în cazul în care doriți să reprezinte un handler eveniment 386 00:20:51,000 --> 00:20:54,000 atunci ai de gând să spun că e o acțiune. 387 00:20:54,000 --> 00:20:57,000 >> Pentru a firului de fapt up această reprezentare grafică 388 00:20:57,000 --> 00:21:00,000 și codul e foarte, foarte simplu. 389 00:21:00,000 --> 00:21:03,000 Dacă doriți să atașați o IBOutlet, tot ce trebuie sa faci este sa te controleze clic, 390 00:21:03,000 --> 00:21:05,000 și vom vedea un exemplu în acest sens foarte repede. 391 00:21:05,000 --> 00:21:07,000 Tu controlezi faceți clic acolo unde se spune View Controller. 392 00:21:07,000 --> 00:21:09,000 Ai de gând să trageți în interfața, sau invers, 393 00:21:09,000 --> 00:21:13,000 dacă doriți să cârlig până o rutină de tratare eveniment ai de gând să trageți de interfața 394 00:21:13,000 --> 00:21:15,000 în altă direcție. 395 00:21:15,000 --> 00:21:20,000 Să aruncăm o privire la un exemplu foarte simplu iOS. 396 00:21:20,000 --> 00:21:23,000 >> Să creăm un nou proiect. 397 00:21:23,000 --> 00:21:25,000 Am de gând să vin până aici la aplicare, 398 00:21:25,000 --> 00:21:28,000 și am de gând să faceți clic pe Aplicație View Single. 399 00:21:28,000 --> 00:21:31,000 Am de gând să faceți clic pe Următorul. Eu voi da proiectul meu un nume. 400 00:21:31,000 --> 00:21:33,000 Voi numi Buna ziua. 401 00:21:33,000 --> 00:21:36,000 Interesant, Apple a presupune ce te crearea unui produs 402 00:21:36,000 --> 00:21:38,000 astfel încât să puteți să-l vândă și ei pot face bani. 403 00:21:38,000 --> 00:21:41,000 Aici am de gând să spun că aceasta este o aplicație pentru iPhone. 404 00:21:41,000 --> 00:21:44,000 Aveți posibilitatea să creați o aplicație iPad, sau dacă doriți să creați unul dintre aceste aplicații 405 00:21:44,000 --> 00:21:47,000 care acceptă ambele dispozitive pe care le puteți face și acest lucru. 406 00:21:47,000 --> 00:21:49,000 Acestea sunt ceea ce vrei checkmarks dvs. să arate ca. 407 00:21:49,000 --> 00:21:51,000 >> Doriți să utilizați scenarii, pe care le vom vedea mai târziu, 408 00:21:51,000 --> 00:21:54,000 si cu siguranta ai doriți să utilizați numărare automată de referință, 409 00:21:54,000 --> 00:21:58,000 care este o caracteristică frumos care vă împiedică să vă fi nevoie să spun malloc și gratuit. 410 00:21:58,000 --> 00:22:03,000 Cu excepția cazului în care doriți să apelați malloc și liber, aș părăsi această Checked. 411 00:22:03,000 --> 00:22:07,000 Voi faceți clic pe Următorul, și în cele din urmă, acest lucru este de gând să mă întrebe unde vreau să-l salveze. 412 00:22:07,000 --> 00:22:14,000 Voi crea lovit, și aici vom merge. 413 00:22:14,000 --> 00:22:16,000 Am creat un nou proiect. 414 00:22:16,000 --> 00:22:19,000 Aici pe stânga sunt toate fișierele care sunt în interiorul de proiectul meu, 415 00:22:19,000 --> 00:22:22,000 și observați că am o grămadă, și eu nici măcar nu am făcut nimic. 416 00:22:22,000 --> 00:22:24,000 IOS este mare. 417 00:22:24,000 --> 00:22:27,000 >> De exemplu, aici în această ViewController.h, 418 00:22:27,000 --> 00:22:30,000 acest lucru se întâmplă pentru a reprezenta controler mea prima vedere, 419 00:22:30,000 --> 00:22:32,000 astfel primul ecran interiorul aplicația mea. 420 00:22:32,000 --> 00:22:34,000 Acum știm ce se spune. 421 00:22:34,000 --> 00:22:36,000 Noi spunem asta te-am sunat ViewController clasă, 422 00:22:36,000 --> 00:22:40,000 și o ViewController face tot ceea ce face un UIViewController, 423 00:22:40,000 --> 00:22:43,000 și aceasta, din nou, este un clasa care Apple a scris că are o mulțime de lucruri la îndemână pentru noi 424 00:22:43,000 --> 00:22:46,000 Vrei afișați ecranul. 425 00:22:46,000 --> 00:22:50,000 Aici este locul unde pot incepe de fapt, definirea a ceea ce controler opinia mea nu, 426 00:22:50,000 --> 00:22:52,000 și se pare că într-adevăr nu au nevoie de nimic din toate acestea. 427 00:22:52,000 --> 00:22:55,000 Acest lucru este cod șabloane pe care Apple mi-o dă pe gratis. 428 00:22:55,000 --> 00:22:59,000 Am făcut-o nevoie de prima linie, sau eu nu am o clasă, 429 00:22:59,000 --> 00:23:02,000 astfel încât să putem scăpa de faptul că și a scăpa de acest lucru. 430 00:23:02,000 --> 00:23:05,000 Ok, deci aceasta este ecranul meu gol. 431 00:23:05,000 --> 00:23:08,000 >> Acum, haideți să faceți clic pe această MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 și acest lucru este în cazul în care începe să devin interesante. 433 00:23:11,000 --> 00:23:14,000 Aceasta reprezintă primul ecran pe aplicația mea. 434 00:23:14,000 --> 00:23:17,000 Dacă vreau să adăugați un buton, în HTML am avut de a crea o etichetă buton. 435 00:23:17,000 --> 00:23:20,000 În Android va trebui să creați o etichetă buton, 436 00:23:20,000 --> 00:23:23,000 dar în iOS, dacă vin doar aici la dreapta jos 437 00:23:23,000 --> 00:23:27,000 si daca dau click pe asta treilea aici, unde se spune Obiecte, 438 00:23:27,000 --> 00:23:31,000 și pot defila în jos, sau pot începe să căutați butonul. 439 00:23:31,000 --> 00:23:35,000 Și uite, un buton, deci, dacă am trage de fapt și plasați acest drept acolo, 440 00:23:35,000 --> 00:23:38,000 Am adăugat doar un buton pentru a prezenta pe ecran aplicația mea. 441 00:23:38,000 --> 00:23:41,000 Dacă vreau să modificați textul, am posibilitatea să faceți clic dublu-l, 442 00:23:41,000 --> 00:23:47,000 spune ceva de ispititoare ca "mă apasă." 443 00:23:47,000 --> 00:23:51,000 Bine, acum, dacă am alerga această aplicație, așa că am compila, 444 00:23:51,000 --> 00:23:54,000 astfel încât să-l rulați fac clic pe butonul de redare, în stânga sus, și nu e aplicația mea. 445 00:23:54,000 --> 00:23:58,000 N-am făcut nimic, și am primit o aplicatie pentru iPhone dulce cautati. 446 00:23:58,000 --> 00:24:01,000 Dacă vreau să-l opresc, aveți posibilitatea să faceți clic pe butonul de oprire 447 00:24:01,000 --> 00:24:03,000 pentru că e mult mai distractiv. 448 00:24:03,000 --> 00:24:07,000 >> Să spunem că vreau de fapt să se întâmple ceva atunci când am apăsați acest buton. 449 00:24:07,000 --> 00:24:09,000 Pentru a face ca ceea ce am nevoie să faceți este să creați am nevoie 450 00:24:09,000 --> 00:24:13,000 un handler eveniment nou sau o acțiune. 451 00:24:13,000 --> 00:24:16,000 Asta înseamnă că am nevoie pentru a crea o metoda pe care vreau să fie numit 452 00:24:16,000 --> 00:24:18,000 atunci când am apăsați butonul, așa că hai să creeze o nouă metodă. 453 00:24:18,000 --> 00:24:20,000 Sunt interiorul ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Am nevoie să spun că există o metodă. 455 00:24:22,000 --> 00:24:26,000 Am nevoie de o cratimă început, pentru că am de gând să fie de asteptare acest lucru pe controler vedere. 456 00:24:26,000 --> 00:24:28,000 Am nevoie pentru a da acest tip. 457 00:24:28,000 --> 00:24:31,000 Tipul de acest lucru este mergi la a fi chestia aia pe care IBAction am văzut mai devreme. 458 00:24:31,000 --> 00:24:35,000 Acesta este un handler eveniment, așa că va returna un IBAction, 459 00:24:35,000 --> 00:24:38,000 și acest lucru este un indiciu pentru a XCode să spun că 460 00:24:38,000 --> 00:24:40,000 acest lucru este ceva ce vreau să firului de ceva. 461 00:24:40,000 --> 00:24:45,000 Pot să dau un nume, cum ar fi virgula buttonPressed,. 462 00:24:45,000 --> 00:24:48,000 >> Acum am declarat-o nouă metodă interiorul clasa mea. 463 00:24:48,000 --> 00:24:50,000 Am spus această metodă trebuie să existe. 464 00:24:50,000 --> 00:24:53,000 Acum, haideți să vină în ViewController.m, 465 00:24:53,000 --> 00:24:56,000 și să spunem că ceea ce această metodă poate face. 466 00:24:56,000 --> 00:25:03,000 Dacă aș începe să tastați, de exemplu, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 Notă XCode este foarte frumos și autocompletes pentru mine. 468 00:25:06,000 --> 00:25:09,000 Asta e într-adevăr minunat. 469 00:25:09,000 --> 00:25:12,000 Observați aici că în interiorul fișierului. M. pot să spun, de asemenea, anulate, 470 00:25:12,000 --> 00:25:15,000 și acest lucru este pentru că nu IBAction este de fapt un tip. 471 00:25:15,000 --> 00:25:19,000 Este de fapt hashtag definite undeva pentru a fi un vid, 472 00:25:19,000 --> 00:25:22,000 și, din nou, aceasta este doar o aluzie la XCode care spune 473 00:25:22,000 --> 00:25:25,000 Vreau ca acest lucru să fie o rutină de tratare eveniment, și vom vedea de ce, în doar o secundă. 474 00:25:25,000 --> 00:25:28,000 Cand acest buton este apăsat am de gând să fac ceva enervant 475 00:25:28,000 --> 00:25:30,000 Vrei afișa un pop-up. 476 00:25:30,000 --> 00:25:35,000 >> Pentru a face acest lucru pot crea o nouă instanță a acestei clase numite UIAlertView, 477 00:25:35,000 --> 00:25:39,000 și aceasta este o clasa care Apple a scris ca se va afișa ferestre pop-up enervant. 478 00:25:39,000 --> 00:25:43,000 Vom numi această alertă pop-up, si am 2 pasi, amintiți-vă, pentru a crea acest obiect. 479 00:25:43,000 --> 00:25:46,000 Primul lucru pe care am nevoie să faceți este să aloce spațiu. 480 00:25:46,000 --> 00:25:48,000 Vreau un UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Vreau să aloce spațiu. Asta e metoda mea prima. 482 00:25:51,000 --> 00:25:53,000 Metoda mea este urmatoarea vreau să-l inițializa, 483 00:25:53,000 --> 00:25:58,000 și așa am această metodă de mare, lung numit initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Asta e, practic ceea ce va controla acest pop-up spune. 485 00:26:01,000 --> 00:26:04,000 Titlul de pop-up mea poate fi salut. 486 00:26:04,000 --> 00:26:08,000 Mesajul a acestui popup poate fi "Aceasta este iOS." 487 00:26:08,000 --> 00:26:10,000 Delegat lucru, nu știu ce e asta. 488 00:26:10,000 --> 00:26:13,000 Să zicem că nu e nimic. 489 00:26:13,000 --> 00:26:18,000 Acum, butonul care va apărea poate spune ceva de genul "Sigur că este," 490 00:26:18,000 --> 00:26:24,000 si nu vreau într-adevăr orice alte butoane, așa că hai să ștergeți că și închideți suportul. 491 00:26:24,000 --> 00:26:27,000 >> Bine, am creat una în plus. Acolo mergem. 492 00:26:27,000 --> 00:26:30,000 Acesta este modul în care pot crea un pop-up nou. 493 00:26:30,000 --> 00:26:35,000 Dacă vreau să arate de fapt, pop-up vreau să sun metoda de spectacol. 494 00:26:35,000 --> 00:26:38,000 Pentru a face acest lucru pot spune de alertă și spectacol, 495 00:26:38,000 --> 00:26:40,000 și din nou, completarea automată a fost super frumos. 496 00:26:40,000 --> 00:26:42,000 Dacă am uitat ce-a fost, dacă am tastat în s, 497 00:26:42,000 --> 00:26:45,000 Pot parcurge aici să dau seama ce a fost, 498 00:26:45,000 --> 00:26:48,000 și-l filtrează frumos. 499 00:26:48,000 --> 00:26:52,000 Acum am creat acest pop-up nou. 500 00:26:52,000 --> 00:26:55,000 Ne vom întoarce la ceea ce înseamnă delegat mai târziu, 501 00:26:55,000 --> 00:26:58,000 si acum vreau sa spun ca am dori această metodă să fie concediat 502 00:26:58,000 --> 00:27:01,000 atunci când am apăsați butonul, așa că am de gând să vină înapoi la rezumat meu, 503 00:27:01,000 --> 00:27:04,000 și vreau să atașați acum acest IBAction. 504 00:27:04,000 --> 00:27:06,000 Primul lucru pe care doriți să faceți este să faceți clic pe butonul. 505 00:27:06,000 --> 00:27:08,000 Când apăsați acest buton vreau să se întâmple ceva. 506 00:27:08,000 --> 00:27:10,000 Eu nu am de gând să țineți apăsată tasta de control. 507 00:27:10,000 --> 00:27:13,000 Am de gând să faceți clic și trageți de butonul 508 00:27:13,000 --> 00:27:15,000 la peste aici, în cazul în care se spune View Controller. 509 00:27:15,000 --> 00:27:17,000 Putem vedea că-l frumos aprinde. 510 00:27:17,000 --> 00:27:22,000 >> Dacă te las merg cu mouse-ul meu am acum acest pop-up pe aici, unde am câteva opțiuni. 511 00:27:22,000 --> 00:27:24,000 Una dintre acestea este evenimentele pe care le pot înregistra. 512 00:27:24,000 --> 00:27:28,000 Acestea sunt toate aceste metode am declarate în dosarul meu h ca IBActions. 513 00:27:28,000 --> 00:27:31,000 Acesta este modul în care ar trebui să știe ce XCode apar în această listă mică, 514 00:27:31,000 --> 00:27:33,000 așa că e doar un indiciu. 515 00:27:33,000 --> 00:27:37,000 Dacă aș faceți clic pe butonul apăsat, am înregistrat acum de tratare a evenimentului. 516 00:27:37,000 --> 00:27:41,000 În JavaScript am avut de spus am unele cod care a înregistrat de tratare a evenimentului. 517 00:27:41,000 --> 00:27:43,000 În Obiectiv-C a fost într-adevăr așa de ușor. 518 00:27:43,000 --> 00:27:46,000 Dacă aș rula acest nou 519 00:27:46,000 --> 00:27:49,000 acum, când apăs pe butonul de tratare meu eveniment se va foc, 520 00:27:49,000 --> 00:27:51,000 și am de gând pentru a obține acest pop-up. 521 00:27:51,000 --> 00:27:54,000 Super, super-simplu acolo. 522 00:27:54,000 --> 00:27:57,000 >> Dacă doriți vreodată să vedeți toate evenimentele care se întâmplă să fie înregistrate 523 00:27:57,000 --> 00:28:00,000 pe o componentă, dacă fac clic pe acest buton 524 00:28:00,000 --> 00:28:02,000 și am venit aici pentru a dreapta 525 00:28:02,000 --> 00:28:05,000 primul puteți vedea aici pot face lucruri cum ar fi tipul de buton, 526 00:28:05,000 --> 00:28:08,000 deci, dacă doriți ca unul dintre cei despre I sau butonul de contact add 527 00:28:08,000 --> 00:28:10,000 sau orice altceva. 528 00:28:10,000 --> 00:28:13,000 Dacă vreau să văd toate evenimentele care sunt pe acest buton 529 00:28:13,000 --> 00:28:16,000 dacă aș veni tot drumul până aici în partea dreaptă 530 00:28:16,000 --> 00:28:19,000 putem vedea aici, la evenimentele pe care le am toate aceste evenimente diferite. 531 00:28:19,000 --> 00:28:23,000 Pot să apăsați butonul, când am dat drumul din buton, atunci când am dublu robinet sau orice altceva, 532 00:28:23,000 --> 00:28:26,000 și cea pe care am înregistrat doar este acest eveniment numit Touch Up Inside, 533 00:28:26,000 --> 00:28:29,000 și acest lucru spune că de îndată ce degetul meu vine de pe butonul de 534 00:28:29,000 --> 00:28:32,000 acest caz, este de gând să foc, și că este exact ceea ce sa întâmplat. 535 00:28:32,000 --> 00:28:36,000 Aceasta este un fel de eveniment apăsat butonul implicit. 536 00:28:36,000 --> 00:28:39,000 >> Orice întrebări până acum? 537 00:28:39,000 --> 00:28:43,000 Bine, asta e modul în care putem începe să firului de lucruri în codul nostru 538 00:28:43,000 --> 00:28:46,000 în lucruri din interiorul interfata noastra. 539 00:28:46,000 --> 00:28:49,000 Amintiți-vă primul lucru am avut de a face a fost să găsească codul, 540 00:28:49,000 --> 00:28:54,000 și apoi am cablat la interfața cod, 541 00:28:54,000 --> 00:28:57,000 și nu există app prima noastră. 542 00:28:57,000 --> 00:29:00,000 Bine, asta a fost foarte misto, si am creat acest buton. 543 00:29:00,000 --> 00:29:03,000 Ce dacă nu facem doriți să aveți pentru a crea un buchet de proprietăți 544 00:29:03,000 --> 00:29:05,000 reprezentând aceste butoane? 545 00:29:05,000 --> 00:29:08,000 De exemplu, în Tic Tac Toe am 9 butoane, 546 00:29:08,000 --> 00:29:11,000 și că ar fi super, super-enervant trebui să drag and drop de 9 ori 547 00:29:11,000 --> 00:29:14,000 sau în cazul în care am avut de a face Tic Tac Toe cu 81 în loc de 9 548 00:29:14,000 --> 00:29:17,000 și a trebuit să drag and drop 81 de ori, și asta e patetic. 549 00:29:17,000 --> 00:29:20,000 Ce putem face în schimb este mai mult ca un HTML 550 00:29:20,000 --> 00:29:23,000 când am avut lucruri, cum ar fi ID-uri și nume și putem căuta lucruri 551 00:29:23,000 --> 00:29:27,000 prin ID-ul lor, există o noțiune similară în iOS numit tag-uri. 552 00:29:27,000 --> 00:29:31,000 >> O etichetă este pur și simplu un identificator unic numeric pentru o componentă. 553 00:29:31,000 --> 00:29:34,000 Dacă eu spun acest lucru are o etichetă de la 0, de exemplu, 554 00:29:34,000 --> 00:29:38,000 dacă am crea un buton și să îi dați o etichetă de la 0, și vom vedea cum se face că, în doar o secundă, 555 00:29:38,000 --> 00:29:41,000 dacă doriți să obțineți acel buton pot spune pur și simplu, vreau să sun 556 00:29:41,000 --> 00:29:45,000 , viewWithTag metoda pe obiect aici 557 00:29:45,000 --> 00:29:48,000 self.view, care reprezintă ecranul curent, de exemplu. 558 00:29:48,000 --> 00:29:53,000 Dacă aș numi această metodă viewWithTag, am de gând să se retragă cu tag-ul butonul 0. 559 00:29:53,000 --> 00:29:58,000 Să aruncăm o privire la acest lucru prin construirea Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 În primul rând, acest lucru este storyboard mea. 561 00:30:01,000 --> 00:30:05,000 Am creat aceste 10 butoane UI. 562 00:30:05,000 --> 00:30:07,000 Observați că sunt toți de aceeași mărime. 563 00:30:07,000 --> 00:30:11,000 Dacă aș faceți clic pe unul dintre acestea și mă voi întoarce aici pe partea asta dreapta 564 00:30:11,000 --> 00:30:15,000 veți vedea am ajustat fontul chiar aici, așa că am făcut fontul un pic mai mare, 565 00:30:15,000 --> 00:30:19,000 dar ceea ce am făcut a fost, de asemenea, am stabilit această etichetă. 566 00:30:19,000 --> 00:30:23,000 I-am spus că acest lucru are o etichetă de 1, si asta e din stânga sus. 567 00:30:23,000 --> 00:30:26,000 >> Acum, dacă fac clic pe alt buton, ca aceasta secundă, 568 00:30:26,000 --> 00:30:29,000 Acum veți vedea că tag-ul meu este 2. 569 00:30:29,000 --> 00:30:32,000 Fiecare dintre aceste butoane are doar o etichetă unică, 570 00:30:32,000 --> 00:30:35,000 și așa mai târziu acest lucru este cum am de gând să înceapă interacțiunea 571 00:30:35,000 --> 00:30:38,000 cu aplicația mea. 572 00:30:38,000 --> 00:30:40,000 Acest lucru este tot în interiorul de controlor de vedere unul, 573 00:30:40,000 --> 00:30:42,000 dar aici este ceea ce avem. 574 00:30:42,000 --> 00:30:44,000 Avem 3 proprietăți aici. 575 00:30:44,000 --> 00:30:49,000 Prima și ultima sunt de gând să reprezinte starea de placa mea. 576 00:30:49,000 --> 00:30:53,000 Practic aceasta Prima dintre ele este o matrice care reprezintă în cazul în care Xs, și în Os sunt. 577 00:30:53,000 --> 00:30:57,000 Aceasta celălalt aici ne spune cărei rândul său, acesta este. 578 00:30:57,000 --> 00:31:01,000 Veți observa că am, de asemenea, aceste lucruri aici. 579 00:31:01,000 --> 00:31:05,000 Înainte de a atunci când am declarat proprietățile le-am dat un nume și un tip. 580 00:31:05,000 --> 00:31:08,000 Ne poate da, de asemenea, le unele informații suplimentare aici. 581 00:31:08,000 --> 00:31:11,000 Acest lucru spune prima nonatomic, și ce spune 582 00:31:11,000 --> 00:31:16,000 este, în principiu un singur lucru va fi niciodată încercarea de a accesa această variabilă la un moment dat. 583 00:31:16,000 --> 00:31:19,000 Ai putea face aplicații mai complexe, care sunt multi-threaded, 584 00:31:19,000 --> 00:31:22,000 și așa mai departe înapoi în Scratch am avut fire diferite, 585 00:31:22,000 --> 00:31:25,000 si sprites diferite ar putea face lucruri diferite în același timp. 586 00:31:25,000 --> 00:31:29,000 >> În cazul în care nu e cazul, ceea ce nu este în ceva care vom fi uitat la, 587 00:31:29,000 --> 00:31:33,000 dacă spunem că de fapt nonatomic va face lucrurile un pic mai repede. 588 00:31:33,000 --> 00:31:37,000 Avem, de asemenea, acest lucru numit atribuie, puternic, sau slab. 589 00:31:37,000 --> 00:31:40,000 Acest atribui doar spune că acesta este un tip standard. 590 00:31:40,000 --> 00:31:43,000 Acest lucru nu este un obiect sau un pointer, deoarece aceasta este doar o bool, 591 00:31:43,000 --> 00:31:46,000 astfel bool este construit în Objective-C. 592 00:31:46,000 --> 00:31:49,000 Acest lucru spune nu încercați să faceți nimic fantezie, cu indicatori aici. 593 00:31:49,000 --> 00:31:51,000 E o scala regulat vechi. 594 00:31:51,000 --> 00:31:54,000 Puternic și slab, slab aceasta spune că, de fapt 595 00:31:54,000 --> 00:31:57,000 Doresc ca acest lucru să fie îndreptată spre ceva în controlerul vedere. 596 00:31:57,000 --> 00:32:00,000 Eu nu am de gând să aloce în mod efectiv sau init asta de unul singur. 597 00:32:00,000 --> 00:32:04,000 Generatorul de interfață, atunci când am alerga app, este de gând să se ocupe de tot ceea ce inițializare. 598 00:32:04,000 --> 00:32:07,000 Dacă eu spun slab, care spune că altcineva va fi crearea acestui. 599 00:32:07,000 --> 00:32:09,000 Dacă eu spun puternic, aceasta spune că am de gând să fie un 600 00:32:09,000 --> 00:32:12,000 care a creat acest obiect de bord, 601 00:32:12,000 --> 00:32:14,000 și așa mai departe aici, am mai multe metode aici, 602 00:32:14,000 --> 00:32:18,000 de exemplu, o acțiune atunci când butonul este apăsat joc nou, 603 00:32:18,000 --> 00:32:20,000 o acțiune atunci când oricare dintre celelalte butoane sunt apăsate, 604 00:32:20,000 --> 00:32:23,000 și et cetera. 605 00:32:23,000 --> 00:32:26,000 >> Nu vom intra în prea mult logica de Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 desi este foarte interesant, dar haideți să aruncăm o privire la 607 00:32:30,000 --> 00:32:33,000 unele dintre lucrurile pe care le putem face în interiorul iOS. 608 00:32:33,000 --> 00:32:35,000 Această metodă nou joc va fi concediat 609 00:32:35,000 --> 00:32:37,000 ori de câte ori am apăsați butonul joc nou. 610 00:32:37,000 --> 00:32:41,000 Pentru a conecta ca pana vin pur și simplu pe la storyboard-mi. 611 00:32:41,000 --> 00:32:43,000 Am dat click pe joc nou. 612 00:32:43,000 --> 00:32:47,000 Dacă eu vin aici să am dreptate se poate vedea că 613 00:32:47,000 --> 00:32:50,000 Atingeți în interiorul este cablat la metoda newGame. 614 00:32:50,000 --> 00:32:53,000 De aceea, acest lucru se întâmplă pentru a fi concediat. 615 00:32:53,000 --> 00:32:56,000 Metoda newGame este de gând să facă un anumit set up. 616 00:32:56,000 --> 00:32:59,000 O să spun că vreau să ștergeți starea de bord. 617 00:32:59,000 --> 00:33:01,000 Aceasta este o metodă de frumos pe mutabile tablouri. 618 00:33:01,000 --> 00:33:03,000 Acest lucru este de gând să spun că acum este rândul lui X, 619 00:33:03,000 --> 00:33:07,000 și acum am de gând să profite de acest lucru viewWithTag. 620 00:33:07,000 --> 00:33:11,000 >> Știu că butoanele mei au etichetele 1-9, 621 00:33:11,000 --> 00:33:13,000 și asta e ceva ce am ales arbitrar. 622 00:33:13,000 --> 00:33:15,000 Dacă vreau să setați textul fiecărui buton pentru a fi gol 623 00:33:15,000 --> 00:33:17,000 pentru că am început doar un joc nou si nu vreau nici o 624 00:33:17,000 --> 00:33:20,000 Xs sau Os să fie lăsat peste Eu pot face asta. 625 00:33:20,000 --> 00:33:24,000 Eu pot să spun că vreau opinia cu tag-ul, 1, 2, 3, 4 et cetera. 626 00:33:24,000 --> 00:33:27,000 Acest lucru va trage un buton diferit de fiecare dată. 627 00:33:27,000 --> 00:33:30,000 Aici am de gând să-l arunce la UIButton. 628 00:33:30,000 --> 00:33:33,000 La fel cum am putea arunca Ints la flotoare și viceversa 629 00:33:33,000 --> 00:33:37,000 aceasta spune că vreau să arunc acest la un UIButton. 630 00:33:37,000 --> 00:33:40,000 Asta înseamnă că tipul de acest lucru va fi un * UIButton 631 00:33:40,000 --> 00:33:43,000 din cauza indicii, dar nu vă faceți griji, ei nu sunt mai înfricoșător. 632 00:33:43,000 --> 00:33:47,000 >> Odată ce am acest buton pe voi pentru a apela o metodă pe ea. 633 00:33:47,000 --> 00:33:50,000 Această metodă se numește setTitle forState, și astfel această spune 634 00:33:50,000 --> 00:33:53,000 Vreau să setați textul buton pentru a fi șir gol, 635 00:33:53,000 --> 00:33:57,000 și vreau să fie șir gol atunci când nu este apăsat. 636 00:33:57,000 --> 00:34:01,000 Dacă eu sunt, folosind aceasta metoda, pot schimba textul butonului 637 00:34:01,000 --> 00:34:04,000 de îndată ce cineva se lovește, dar vrem să spunem atunci când butonul este doar stând acolo 638 00:34:04,000 --> 00:34:07,000 Doresc textul să fie gol. 639 00:34:07,000 --> 00:34:10,000 În cele din urmă, vom inițializa placa mea, 640 00:34:10,000 --> 00:34:12,000 și am de gând să spun că totul este în prezent la 0, 641 00:34:12,000 --> 00:34:15,000 astfel încât acest program membri imuabil este o matrice mutabil, 642 00:34:15,000 --> 00:34:21,000 ceea ce înseamnă că pot apela metoda addObject și la doar o interiorul 0 din ea. 643 00:34:21,000 --> 00:34:23,000 Asta e ceea ce se întâmplă atunci când creez un joc nou. 644 00:34:23,000 --> 00:34:25,000 >> Să aruncăm o privire la alta. 645 00:34:25,000 --> 00:34:28,000 Această metodă este aici IBAction care va fi apăsat 646 00:34:28,000 --> 00:34:31,000 de fiecare dată când unul dintre aceste patrate este apăsat. 647 00:34:31,000 --> 00:34:33,000 Acum avem niște Tic Tac Toe logica aici. 648 00:34:33,000 --> 00:34:36,000 Ne dăm seama cărei rândul său, aceasta este, 649 00:34:36,000 --> 00:34:39,000 și se bazează pe faptul că ne-am stabilit, fie un X sau un O, 650 00:34:39,000 --> 00:34:43,000 dar am observat că suntem reutilizarea acest handler aceluiași eveniment 651 00:34:43,000 --> 00:34:45,000 pentru fiecare dintre aceste butoane. 652 00:34:45,000 --> 00:34:49,000 Asta înseamnă că nu am o metodă pentru butonul din stânga sus, 653 00:34:49,000 --> 00:34:52,000 o metodă diferită pentru butonul din dreapta jos, deși am fi putut face asta. 654 00:34:52,000 --> 00:34:54,000 Asta nu ar fi foarte bun design. 655 00:34:54,000 --> 00:34:57,000 Ceea ce fac eu aici este de fapt am de gând să determine 656 00:34:57,000 --> 00:35:00,000 ce eticheta a butonului care a fost apăsat este. 657 00:35:00,000 --> 00:35:04,000 Ai observat că această metodă joc are un singur argument. 658 00:35:04,000 --> 00:35:07,000 Se numește expeditor, și ceea ce se expeditor se expeditor este de gând să 659 00:35:07,000 --> 00:35:10,000 reprezintă exact ceea ce a fost luat de acțiune asupra. 660 00:35:10,000 --> 00:35:15,000 Dacă apăs pe un buton, această expeditor va fi faptul că UIButton 661 00:35:15,000 --> 00:35:18,000 că de fapt am apăsat, astfel încât înseamnă că UIButton 662 00:35:18,000 --> 00:35:20,000 are o etichetă pentru că am creat o etichetă. 663 00:35:20,000 --> 00:35:23,000 >> Dacă vreau să ajungem la tag-ul pot spune pur și simplu, 664 00:35:23,000 --> 00:35:26,000 Vreau tag expeditor, 665 00:35:26,000 --> 00:35:28,000 și din nou, tocmai l-am turnat într-o UIButton. 666 00:35:28,000 --> 00:35:32,000 I se întâmplă să știu că expeditorul va fi un UIButton. 667 00:35:32,000 --> 00:35:34,000 Aceasta nu trebuie să fie întotdeauna un UIButton. 668 00:35:34,000 --> 00:35:36,000 Am putea, de exemplu, inregistreaza-te tratare a aceluiași eveniment 669 00:35:36,000 --> 00:35:38,000  pentru unul pentru un buton, unul pentru un slider. 670 00:35:38,000 --> 00:35:40,000 În acest caz, eu știu că sunt toate butoanele, așa că am de gând să spun 671 00:35:40,000 --> 00:35:43,000 Vreau să fie un buton, iar apoi pot obține eticheta, 672 00:35:43,000 --> 00:35:48,000 si de la tag-ul Acum știu unde mă aflu în interiorul bord. 673 00:35:48,000 --> 00:35:51,000 Atunci pot seta pur și simplu, fie X sau O, se poate răsturna rândul său, 674 00:35:51,000 --> 00:35:54,000 verifica cine a câștigat, et cetera. 675 00:35:54,000 --> 00:35:59,000 >> Orice întrebări cu privire la acest lucru până acum? 676 00:35:59,000 --> 00:36:02,000 Bine, tot codul am postat on-line-ne, nu vreau să intru în prea multe 677 00:36:02,000 --> 00:36:06,000 a logicii Toe Tic Tac, dar acum puteți vedea că într-adevăr 678 00:36:06,000 --> 00:36:09,000 Tot ce facem este suntem looping peste acest tablou, 679 00:36:09,000 --> 00:36:13,000 așa că avem un cuplu de bucle de aici, iar noi suntem doar compararea a vedea 680 00:36:13,000 --> 00:36:18,000 avem un meci în toate rândurile, un meci într-o coloană sau ceva de genul asta. 681 00:36:18,000 --> 00:36:21,000 Pentru a rula această aplicație, de fapt, dacă am apăsați pe unul dintre aceste butoane 682 00:36:21,000 --> 00:36:24,000 această metodă jocul a fost concediat, si asta inseamna ca doar setat 683 00:36:24,000 --> 00:36:31,000 butonul pentru a fi un X, asa ca acum acest buton va fi un O, și așa mai departe, 684 00:36:31,000 --> 00:36:35,000 și așa că e modul în care vom începe să interacționeze cu această aplicație singură pagină. 685 00:36:35,000 --> 00:36:38,000 >> Vom posta codul, deci nu ezitați să ia cunoștință faptul că, 686 00:36:38,000 --> 00:36:43,000 dar hai sa vorbim acum despre unele aplicații, care sunt mai mult decât o singură pagină. 687 00:36:43,000 --> 00:36:47,000 La fel de interesant ca Tic Tac Toe a fost, o mulțime de aplicații în interiorul iOS 688 00:36:47,000 --> 00:36:50,000 acestea sunt un fel de detaliere lucrurile cu mai multe ecrane. 689 00:36:50,000 --> 00:36:54,000 Primul concept pe care vom avea nevoie să vorbim despre protocoalele sunt, 690 00:36:54,000 --> 00:36:57,000 și un protocol este pur și simplu un set de metode 691 00:36:57,000 --> 00:36:59,000 pe care le poate promite să definiți. 692 00:36:59,000 --> 00:37:02,000 Dacă am crea acest nou protocol cu ​​2 metode, aceasta în primul rând, 693 00:37:02,000 --> 00:37:05,000 dacă tipul de retur este nul, l-am numit foo. 694 00:37:05,000 --> 00:37:07,000 Este nevoie de nici un argument. Am o altă metodă. 695 00:37:07,000 --> 00:37:11,000 Aceasta returneaza un int. Am numit-o bara, si este nevoie de un singur argument. 696 00:37:11,000 --> 00:37:14,000 Toate acest protocol este că se numește SomeProtocol aici, 697 00:37:14,000 --> 00:37:19,000 Acesta este un set de lucruri pe care cineva poate pune în aplicare. 698 00:37:19,000 --> 00:37:22,000 Nu am interiorul acestui protocol a spus ceea ce face foo. 699 00:37:22,000 --> 00:37:26,000 În schimb, spun doar ați putea defini foo, dacă doriți să. 700 00:37:26,000 --> 00:37:30,000 Dacă am crea un controler de vizualizare sau pentru crearea unei clase 701 00:37:30,000 --> 00:37:33,000 Pot interiorul clasei care promit să pună în aplicare 702 00:37:33,000 --> 00:37:40,000 unele dintre aceste metode, astfel încât, de exemplu, în cazul în care spun 703 00:37:40,000 --> 00:37:43,000 asta acum spune că fac o promisiune pentru a vă că în interiorul 704 00:37:43,000 --> 00:37:50,000 din această clasă controler vedere, voi avea definiții atât pentru foo și bar. 705 00:37:50,000 --> 00:37:52,000 >> De ce este faptul că folositoare? 706 00:37:52,000 --> 00:37:55,000 O mulțime de componente din interiorul iOS să profite de această 707 00:37:55,000 --> 00:37:58,000 model de design numit delegat, precum și ceea ce spune delegația 708 00:37:58,000 --> 00:38:01,000 este faptul că, de exemplu, în cazul în care am o casetă de text 709 00:38:01,000 --> 00:38:04,000 și există unele evenimente care ar putea fi înregistrate interiorul casetei de text meu, 710 00:38:04,000 --> 00:38:07,000 mai degrabă decât crearea de evenimente separate, ce pot face este să pot spune 711 00:38:07,000 --> 00:38:10,000 delegat al acestei casete de text va fi un obiect. 712 00:38:10,000 --> 00:38:13,000 Când spun că acest lucru este un delegat acum că înseamnă că 713 00:38:13,000 --> 00:38:16,000 ori de câte ori un eveniment ar fi fost concediat, în caseta de text 714 00:38:16,000 --> 00:38:18,000 , mai degrabă decât a fi nevoie să-l înregistrați sau ceva de genul asta 715 00:38:18,000 --> 00:38:21,000 este doar de gând să apela o metoda pe delegatul. 716 00:38:21,000 --> 00:38:24,000 De exemplu, în interiorul casetei text mea am o metodă de când am apăsați 717 00:38:24,000 --> 00:38:27,000 care face buton pe dreapta jos, 718 00:38:27,000 --> 00:38:30,000 și așa mai departe, mai degrabă decât înregistrarea de tratare a evenimentelor ce pot să spun este 719 00:38:30,000 --> 00:38:34,000 casetă text, aici este un obiect pe care vreau să-l suni pe o metodă de 720 00:38:34,000 --> 00:38:37,000 de fiecare dată apasă butonul Done cineva, 721 00:38:37,000 --> 00:38:40,000 iar acest lucru înseamnă că obiectul trebuie să pună în aplicare unele protocol 722 00:38:40,000 --> 00:38:45,000 care spune promit pentru a defini această acțiune buton făcut, 723 00:38:45,000 --> 00:38:47,000 pentru că dacă nu definește această metodă și apăsați făcut, 724 00:38:47,000 --> 00:38:49,000 atunci va fi confuz. 725 00:38:49,000 --> 00:38:55,000 >> Să aruncăm o privire la un exemplu. 726 00:38:55,000 --> 00:38:58,000 Aici am pur și simplu, o casetă de text, 727 00:38:58,000 --> 00:39:04,000 și una dintre proprietățile din această casetă de text de aici de pe acest partea dreapta este delegat. 728 00:39:04,000 --> 00:39:06,000 Aceasta este o proprietate a clasei. 729 00:39:06,000 --> 00:39:09,000 Ce am făcut eu aici este apasat controla, și am târât din acest loc de aici 730 00:39:09,000 --> 00:39:13,000 la controler vedere, și care spune acum delegat al acestei casete de text 731 00:39:13,000 --> 00:39:18,000 va fi controler de vedere. 732 00:39:18,000 --> 00:39:20,000 Asta înseamnă că, atunci când unele acțiuni se întâmple, mai degrabă decât înregistrarea 733 00:39:20,000 --> 00:39:25,000 Stivuitoare separate, eveniment care vreau să le trimită la delegat. 734 00:39:25,000 --> 00:39:28,000 Acum, haideți să aruncăm o privire la controler punctul meu de vedere. 735 00:39:28,000 --> 00:39:32,000 In interiorul fișierului. H. Am facut o promisiune. 736 00:39:32,000 --> 00:39:36,000 Am promis să pună în aplicare unele metode în interiorul acestui protocol 737 00:39:36,000 --> 00:39:38,000 numit UITextFieldDelegate, și, din nou, 738 00:39:38,000 --> 00:39:42,000 aceasta este doar o lista de unele lucruri pe care le pot alege să pună în aplicare. 739 00:39:42,000 --> 00:39:46,000 >> Dacă vin aici, în mea. M. dosar, am pus în aplicare o metodă de astfel de. 740 00:39:46,000 --> 00:39:49,000 Am numit-o textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 pentru că asta e ceea ce a fost numit in interiorul protocolului. 742 00:39:52,000 --> 00:39:57,000 Și acum ori de câte ori am apăsați butonul interiorul făcut din câmp text 743 00:39:57,000 --> 00:40:00,000 aceasta este ceea ce se întâmplă să se numeste, asa ca nu am înregistra o tratare a evenimentului. 744 00:40:00,000 --> 00:40:03,000 Am conectat delegat, ori de câte ori și acest eveniment este concediat 745 00:40:03,000 --> 00:40:08,000 aceasta este metoda care va fi numit, așa că, dacă vin aici pentru a-mi storyboard și rulați-l- 746 00:40:08,000 --> 00:40:11,000 în timp ce se încarcă putem vedea ce face asta. 747 00:40:11,000 --> 00:40:13,000 Pe ecranul meu am 2 lucruri. 748 00:40:13,000 --> 00:40:16,000 Am acest câmp de text, și am această etichetă. 749 00:40:16,000 --> 00:40:19,000 Eu pur și simplu spun eu vreau textul această etichetă 750 00:40:19,000 --> 00:40:23,000 să fie egal cu orice utilizator introdus în interiorul câmpul de text. 751 00:40:23,000 --> 00:40:26,000 Această linie următor aici este pur și simplu o metodă care te-am sunat 752 00:40:26,000 --> 00:40:29,000 pe câmpul de text care spune că vreau să ascundeți tastatura. 753 00:40:29,000 --> 00:40:33,000 Acesta este doar metoda arbitrară că Apple a ales. 754 00:40:33,000 --> 00:40:38,000 >> Din nou, înainte de a-am făcut nimic am avut pentru a firului totul, așa că am venit prima dată aici. 755 00:40:38,000 --> 00:40:42,000 Din View Controller-am trageți pe la caseta de text. 756 00:40:42,000 --> 00:40:46,000 Am dat drumul, iar eu pot vedea aici că pot face acest proprietate câmpul de text 757 00:40:46,000 --> 00:40:49,000 deoarece aici, în vederea controlerul am definit o proprietate 758 00:40:49,000 --> 00:40:52,000 că este un IBOutlet a unui câmp de text. 759 00:40:52,000 --> 00:40:55,000 Aceasta spune că eu pot vira această proprietate în sus 760 00:40:55,000 --> 00:40:59,000 într-un câmp de text în UI mea. 761 00:40:59,000 --> 00:41:03,000 Acum, când fac clic pe aceasta am puteți începe să tastați. 762 00:41:03,000 --> 00:41:06,000 Acum, dacă fac clic pe butonul făcut acest lucru se întâmplă la foc 763 00:41:06,000 --> 00:41:08,000 un eveniment care pot răspunde acum la. 764 00:41:08,000 --> 00:41:10,000 Niciun eveniment care operează. 765 00:41:10,000 --> 00:41:13,000 Asta e modul în care am răspuns la acel buton făcut. 766 00:41:13,000 --> 00:41:15,000 Sens? 767 00:41:15,000 --> 00:41:20,000 >> Acesta nu este un model de proiectare pe care-ar putea să nu găsiți vreodată 768 00:41:20,000 --> 00:41:23,000 crearea de protocol ta, dar știu doar că unele 769 00:41:23,000 --> 00:41:27,000 componente diferite evenimente iOS inregistreaza-te în moduri diferite. 770 00:41:27,000 --> 00:41:29,000 Butoane, de exemplu, folosesc aceste IBActions. 771 00:41:29,000 --> 00:41:32,000 Câmpuri de text, pe de altă parte, se va folosi de delegați. 772 00:41:32,000 --> 00:41:36,000 Putem vedea și vă puteți uita toate că în interiorul unor documentației. 773 00:41:36,000 --> 00:41:41,000 Apropo, există de fapt o grămadă de lucruri UI construit în iOS pentru tine, 774 00:41:41,000 --> 00:41:46,000 astfel, de exemplu, modul în care am făcut că spune făcut la dreapta jos 775 00:41:46,000 --> 00:41:48,000 Am selectat este acest câmp de text. 776 00:41:48,000 --> 00:41:50,000 Am venit aici. 777 00:41:50,000 --> 00:41:53,000 Am defilat în jos un pic pentru a reveni cheie, 778 00:41:53,000 --> 00:41:56,000 si eu pot face de fapt aceasta o grămadă de lucruri, cum ar fi dacă vreau să spun că 779 00:41:56,000 --> 00:42:00,000 apel de urgență în loc să pot să fac asta, ceea ce este complet aleatoare, 780 00:42:00,000 --> 00:42:02,000 și nu știu de ce există un built-in butonul de apel de urgență, 781 00:42:02,000 --> 00:42:06,000 dar există, se spune de apel de urgență cu litere foarte mici. 782 00:42:06,000 --> 00:42:08,000 Acolo te duci. 783 00:42:08,000 --> 00:42:12,000 >> Explora cu siguranta toate aceste opțiuni diferite în iOS. 784 00:42:12,000 --> 00:42:14,000 Orice întrebări cu privire la delegați? 785 00:42:14,000 --> 00:42:18,000 Din nou, doar un model de design interesant care ar trebui să fie conștienți de. 786 00:42:18,000 --> 00:42:22,000 Bine, haideți să aruncăm o privire la următoarea opinii de masa. 787 00:42:22,000 --> 00:42:26,000 O vizualizare tabel este, în principiu faptul că lista de elemente care este peste tot locul în iOS. 788 00:42:26,000 --> 00:42:29,000 Când sunteți flipping prin toate contactele, te uiți la 789 00:42:29,000 --> 00:42:34,000 pagina de setare, și că un fel de listă de lucruri se numește o vizualizare tabel. 790 00:42:34,000 --> 00:42:37,000 Punere în aplicare a unui tabel în vizualizare iOS este destul de simplu. 791 00:42:37,000 --> 00:42:41,000 În loc de a face o clasă care coboară de la care UIViewController 792 00:42:41,000 --> 00:42:44,000 ca și cum am făcut înainte de a ne pur și simplu trebuie să spunem, mai degrabă decât 793 00:42:44,000 --> 00:42:46,000 tot ceea ce un UIViewController nu vreau să fac, 794 00:42:46,000 --> 00:42:50,000 Eu spun tot ceea ce un UITableViewController nu vreau să fac, 795 00:42:50,000 --> 00:42:54,000 astfel încât adaugă pur și simplu unele lucruri suplimentare care sunt total făcut pentru noi. 796 00:42:54,000 --> 00:42:58,000 Avem nevoie de a face foarte puțin pentru a umple golurile, practic, în interiorul tabelului. 797 00:42:58,000 --> 00:43:02,000 >> În scopul de a afișa un tabel am nevoie pentru a răspunde la câteva întrebări. 798 00:43:02,000 --> 00:43:06,000 Prima întrebare trebuie să răspundă este cât de multe secțiuni sunt în tabelul? 799 00:43:06,000 --> 00:43:08,000 Când sunteți flipping prin aplicația Dvs. de contacte vă veți observa că e un fel de 800 00:43:08,000 --> 00:43:12,000 organizat de Ca, atunci aveți B, și că aveți antet putin sub. 801 00:43:12,000 --> 00:43:14,000 Fiecare dintre cei care se numește o secțiune. 802 00:43:14,000 --> 00:43:16,000 Tu poate sau nu poate avea nevoie de astea. 803 00:43:16,000 --> 00:43:19,000 Primul lucru ce trebuie să faceți este să pună în aplicare o metodă de 804 00:43:19,000 --> 00:43:22,000 numit tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Care pur și simplu se întoarce cât de multe secțiuni aveți, 806 00:43:25,000 --> 00:43:29,000 astfel încât aceasta ar putea întoarce într-o spune, dacă aveți o vizualizare tabel mare. 807 00:43:29,000 --> 00:43:33,000 Următoarea întrebare pe care trebuie să știe iOS este câte rânduri aveți? 808 00:43:33,000 --> 00:43:36,000 De exemplu, te flipping printr-o vizualizare tabel. 809 00:43:36,000 --> 00:43:39,000 Aveți un număr fix de melodii pe care îl căutați la sau un număr fix de contacte. 810 00:43:39,000 --> 00:43:41,000 Daca esti mine, desigur, nu că mulți, 811 00:43:41,000 --> 00:43:44,000 și pentru ca e modul iOS știe cât de multe celule pentru a afișa. 812 00:43:44,000 --> 00:43:46,000 >> Din nou, acest lucru ar putea spune ceva de genul retur 3. 813 00:43:46,000 --> 00:43:49,000 Punctul meu de vedere tabelul are 3 rânduri. 814 00:43:49,000 --> 00:43:52,000 În cele din urmă, iOS trebuie să știe ce fiecare celulă arata ca, 815 00:43:52,000 --> 00:43:54,000 Deci, ce este de fapt de gând să faceți este să numim această metodă în jos aici, 816 00:43:54,000 --> 00:43:57,000 acest tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Se va apela la această metodă fiecare celula in interiorul tabelului. 818 00:44:01,000 --> 00:44:03,000 Cum se știe cum de multe ori să-l sun? 819 00:44:03,000 --> 00:44:06,000 Ei bine, ai spus interiorul numărului de rânduri din secțiunea. 820 00:44:06,000 --> 00:44:08,000 Vom numi acest lucru pe fiecare dintre celulele noastre, 821 00:44:08,000 --> 00:44:11,000 și în interiorul acest lucru este în cazul în care puteți face de fapt lucruri, cum ar fi 822 00:44:11,000 --> 00:44:16,000 seta textul sau să vă spun ce butonul mic albastru pe partea dreapta nu. 823 00:44:16,000 --> 00:44:19,000 Model pentru obtinerea acestor celule, vom folosi această metodă 824 00:44:19,000 --> 00:44:22,000 numit dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C este, de fapt foarte bine cunoscut pentru lungimea ridicol numelor metoda lor, 826 00:44:29,000 --> 00:44:32,000 și acest lucru este într-adevăr un caz frumos în punctul de exemplu. 827 00:44:32,000 --> 00:44:37,000 Ce face această metodă este asta spune doar vreau să-mi dai o celulă. 828 00:44:37,000 --> 00:44:39,000 Doar un lucru iOS. 829 00:44:39,000 --> 00:44:41,000 Dacă aveți ceva de genul 100000 melodii de pe iPod 830 00:44:41,000 --> 00:44:45,000 ce iOS nu vrea să faceți este să aloce 100.000 de celule, 831 00:44:45,000 --> 00:44:48,000 pentru că dacă ești la partea de sus a listei, ai într-adevăr nevoie pentru a aloca memorie 832 00:44:48,000 --> 00:44:51,000 pentru celula care e 99,000 rânduri în jos? 833 00:44:51,000 --> 00:44:55,000 Nu, pentru că așa cum ești derulând poți fel de aloce ca te duci de-a lungul. 834 00:44:55,000 --> 00:44:57,000 Acest lucru se face pentru tine. 835 00:44:57,000 --> 00:44:59,000 Nu trebuie să vă faceți griji cu privire la toate chestiile astea de performanță prost. 836 00:44:59,000 --> 00:45:02,000 Tot ce spui te numim această metodă dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 și acest lucru spune, bine, dacă aveți nevoie să am de gând să creeze o celulă nou pentru tine. 838 00:45:06,000 --> 00:45:09,000 >> Dar daca esti la partea de jos a tabelului și le-ați alocat deja unele celule 839 00:45:09,000 --> 00:45:12,000 la partea de sus a tabelului pe care îl într-adevăr nu avea nevoie de prea curand 840 00:45:12,000 --> 00:45:15,000 Am de gând să vă dau unul dintre cei din spate în loc de a aloca unul nou, 841 00:45:15,000 --> 00:45:17,000 și astfel aceasta este o preocupare de performanță frumos. 842 00:45:17,000 --> 00:45:21,000 Nu trebuie să aloce celule tine. 843 00:45:21,000 --> 00:45:23,000 Asta o să te dea înapoi o celulă. 844 00:45:23,000 --> 00:45:25,000 O să se întoarcă la tine un obiect celulă. 845 00:45:25,000 --> 00:45:28,000 Odată ce au obiect de celule care le puteți face lucruri la ea. 846 00:45:28,000 --> 00:45:32,000 Puteți seta textul de celula cu această proprietate numita etichetă de text. 847 00:45:32,000 --> 00:45:36,000 Puteți adăuga că săgeata de pe dreapta sau de alte chestii aleatoare 848 00:45:36,000 --> 00:45:41,000 cu această proprietate alte numit accessoryType, și așa mai departe și așa mai departe. 849 00:45:41,000 --> 00:45:46,000 >> Să aruncăm o privire la punerea în aplicare a de fapt o vizualizare tabel acum. 850 00:45:46,000 --> 00:45:49,000 Când am creat acest proiect 851 00:45:49,000 --> 00:45:53,000 mai degrabă decât a spune aplicarea singur punct de vedere, de fapt am venit aici 852 00:45:53,000 --> 00:45:57,000 la master-detaliu aplicație, și așa mai practic aceasta corespunde aplicația e-mail 853 00:45:57,000 --> 00:46:01,000 pe iPad cu vedere tabelul de pe partea stângă și apoi conținutul de pe dreapta. 854 00:46:01,000 --> 00:46:07,000 Pe iPod sau iPhone acest lucru se întâmplă pentru a corespunde la o vizualizare singur tabel. 855 00:46:07,000 --> 00:46:10,000 Asta e atunci când am luat codul meu Starter. 856 00:46:10,000 --> 00:46:13,000 >> Să aruncăm o privire la storyboard. 857 00:46:13,000 --> 00:46:15,000 Toate acestea au fost făcute pentru mine, practic a creat. 858 00:46:15,000 --> 00:46:18,000 Aceasta bara de navigare din ceea ce mi-a arătat-o ​​celulă de exemplu ar putea arăta, 859 00:46:18,000 --> 00:46:22,000 și pot să faceți dublu clic pe aceasta, schimba titlul. 860 00:46:22,000 --> 00:46:25,000 Orice alte preocupări UI mă pot descurca acolo. 861 00:46:25,000 --> 00:46:27,000 Fișier header pare foarte simplu. 862 00:46:27,000 --> 00:46:30,000 , Mai degrabă decât a spune acest lucru este UIViewController suntem acum spun acest lucru este un 863 00:46:30,000 --> 00:46:35,000 TableViewController, astfel încât știm că vrem să numim toate aceste metode de masă. 864 00:46:35,000 --> 00:46:38,000 Următorul Vreau să creați o proprietate care va reprezenta 865 00:46:38,000 --> 00:46:40,000 lucrurile din interiorul masa mea. 866 00:46:40,000 --> 00:46:43,000 Acest tabel se va afișa arbitrar 867 00:46:43,000 --> 00:46:46,000 o listă de fructe, și așa că am nevoie pentru a crea unele matrice 868 00:46:46,000 --> 00:46:49,000 în care pot insera fructe. 869 00:46:49,000 --> 00:46:52,000 Interiorul dosarul meu punerii în aplicare primul lucru pe care vreau să fac 870 00:46:52,000 --> 00:46:55,000 este că doriți să vă asigurați că a inițializa această matrice. 871 00:46:55,000 --> 00:46:58,000 >> I-am spus alloc init, creat matrice mea de fructe, 872 00:46:58,000 --> 00:47:03,000 si eu sunt adăugarea de 4 lucruri la ea, dintre care unul este mult mai controversată decât alte 3. 873 00:47:03,000 --> 00:47:06,000 Și acum am o serie de marimea 4. 874 00:47:06,000 --> 00:47:08,000 Noi îl tremura în CS50. 875 00:47:08,000 --> 00:47:11,000 Am acum o serie de marimea 4. 876 00:47:11,000 --> 00:47:13,000 Acum am de gând să înceapă răspunde la aceste întrebări, și, de fapt, 877 00:47:13,000 --> 00:47:16,000 atunci când am creat această aplicație toate acestea au fost deja făcut pentru mine. 878 00:47:16,000 --> 00:47:19,000 Nu am avut să tastați în numărul de secțiuni, având în vedere tabelul. 879 00:47:19,000 --> 00:47:22,000 Acesta a fost deja acolo, și eu sunt de umplere în spațiile libere. 880 00:47:22,000 --> 00:47:24,000 Câte secțiunile am? 881 00:47:24,000 --> 00:47:26,000 Unul. Toate terminat. 882 00:47:26,000 --> 00:47:28,000 Câte rânduri am? 883 00:47:28,000 --> 00:47:31,000 Ei bine, am un rând pentru fiecare fruct, astfel încât acest număr 884 00:47:31,000 --> 00:47:34,000 este o proprietate de orice matrice care spune cat de mare este? 885 00:47:34,000 --> 00:47:36,000 Asta e cât de multe rânduri am. 886 00:47:36,000 --> 00:47:42,000 În cele din urmă, am nevoie să spun ceea ce nu fiecare celulă arata? 887 00:47:42,000 --> 00:47:46,000 Am de gând să spun dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Din nou, acest lucru a fost deja scris pentru mine. 889 00:47:48,000 --> 00:47:51,000 Nu am avut de a face acest lucru singur, și vreau să mă întorc 890 00:47:51,000 --> 00:47:54,000 această celulă de la această locație. 891 00:47:54,000 --> 00:47:57,000 Amintiți-vă că suntem de asteptare aceeași metodă pe fiecare celulă unică, 892 00:47:57,000 --> 00:48:01,000 și acest argument aici, acest argument indexPath, 893 00:48:01,000 --> 00:48:03,000 spune ce am intrat rând 894 00:48:03,000 --> 00:48:05,000 Dacă eu spun indexPath.row aici 895 00:48:05,000 --> 00:48:09,000 acest lucru va fi 0, atunci acesta va fi 1, atunci acesta va fi de 2, iar acest lucru este atât de stiu 896 00:48:09,000 --> 00:48:11,000 ce celula Eu sunt în prezent afișarea. 897 00:48:11,000 --> 00:48:15,000 Vreau să setați textul celulei folosind această proprietate textLabel 898 00:48:15,000 --> 00:48:19,000 pentru a merge în interiorul meu matrice de fructe și de a lua 899 00:48:19,000 --> 00:48:21,000 corespunzătoare pentru fiecare rand obiect. 900 00:48:21,000 --> 00:48:24,000 Dacă aceasta este un șir, eu sunt acum de stabilire 901 00:48:24,000 --> 00:48:28,000 proprietatea textului într-un șir. 902 00:48:28,000 --> 00:48:30,000 Eu pot face un alt lucru. 903 00:48:30,000 --> 00:48:32,000 Eu pot înregistra, de asemenea, o rutină de tratare eveniment pe fiecare dintre celule, 904 00:48:32,000 --> 00:48:35,000 așa că atunci când am apăsați pe fiecare dintre aceste celule 905 00:48:35,000 --> 00:48:39,000 acest didSelectRowAtIndexPath, acest lucru se întâmplă să fie numit pentru mine, 906 00:48:39,000 --> 00:48:42,000 așa pur și simplu prin definirea acestei mă pot descurca acum ce se întâmplă 907 00:48:42,000 --> 00:48:46,000 când atingeți o celulă, și, din nou, ne trece în celula care a fost lovit 908 00:48:46,000 --> 00:48:50,000 astfel încât să putem reutiliza acest handler eveniment aceeași pentru toate celulele noastre. 909 00:48:50,000 --> 00:48:53,000 >> Din nou, acest lucru este ceva iOS face pentru mine. 910 00:48:53,000 --> 00:48:55,000 Să afișeze un alt tip pop-up enervant 911 00:48:55,000 --> 00:48:59,000 care pur și simplu spune-ai ales ceva în cazul în care ceva 912 00:48:59,000 --> 00:49:04,000 va fi obiectul rând. 913 00:49:04,000 --> 00:49:10,000 Când am rula acest, am de gând să aibă acest punct de vedere tabel frumos 914 00:49:10,000 --> 00:49:14,000 cu un rând pentru fiecare dintre acestea fructe, și dacă am apăsați unul 915 00:49:14,000 --> 00:49:16,000 ea mi-a spus ce sa întâmplat. 916 00:49:16,000 --> 00:49:21,000 Sens? 917 00:49:21,000 --> 00:49:24,000 Să construim un pic mai complexă a unei aplicații, 918 00:49:24,000 --> 00:49:28,000 la fel de mult ca și făcând clic pe care ai ales-roșii este. 919 00:49:28,000 --> 00:49:31,000 Parte frumos despre storyboarding 920 00:49:31,000 --> 00:49:35,000 este nu este doar de gând să ne ajute să ecrane de proiectare individual, 921 00:49:35,000 --> 00:49:38,000 este, de asemenea, o să ne ajute lega împreună aplicația întreaga noastră, 922 00:49:38,000 --> 00:49:42,000 astfel încât aplicația finală vom fi clădirii este acest frumos sport stiri cititor, 923 00:49:42,000 --> 00:49:45,000 și așa că o să aibă mai multe ecrane, și așa că am poate reprezenta, de fapt 924 00:49:45,000 --> 00:49:48,000 fiecare dintre aceste ecrane multiple pe rezumat, 925 00:49:48,000 --> 00:49:52,000 si eu pot depărta și a vedea aplicația mea de la un nivel ridicat. 926 00:49:52,000 --> 00:49:55,000 >> În scopul de a crea un interior nou element de storyboard meu 927 00:49:55,000 --> 00:49:59,000 e foarte simplu în interiorul Generatorul de interfață. 928 00:49:59,000 --> 00:50:01,000 Dacă vreau să adăugați un alt ecran de la acest lucru, de exemplu, 929 00:50:01,000 --> 00:50:06,000 Pot zoom prima cu zoom pinch că Apple iubește atât de mult, 930 00:50:06,000 --> 00:50:09,000 și aici jos înainte de a mă căuta un buton 931 00:50:09,000 --> 00:50:12,000 si eu drag and drop un buton 932 00:50:12,000 --> 00:50:15,000 dacă doriți să creați un ecran nou pot de fapt, drag-and-drop 933 00:50:15,000 --> 00:50:19,000 un controler vedere întreg, așa că, dacă am alege acest lucru, trage pe dreapta aici, 934 00:50:19,000 --> 00:50:23,000 hei, există un alt ecran, și așa mai departe acum folosind acest fișier rezumat aceeași 935 00:50:23,000 --> 00:50:26,000 Pot avea toate ecranele din interiorul aplicația mea, și eu pot micșora 936 00:50:26,000 --> 00:50:28,000 și a vedea modul în care acestea interacționează. 937 00:50:28,000 --> 00:50:32,000 Acestea nu vor interacționa încă. 938 00:50:32,000 --> 00:50:36,000 Modul în care aceste 2 ecrane interacționa este că definiți relații. 939 00:50:36,000 --> 00:50:39,000 Vă pot spune practic acest ecran, când apăsați acest buton, 940 00:50:39,000 --> 00:50:42,000 Vreau să alunece pe la acest ecran nou. 941 00:50:42,000 --> 00:50:44,000 Asta înseamnă că e un fel de relație între 942 00:50:44,000 --> 00:50:46,000  primul ecran și al doilea ecran. 943 00:50:46,000 --> 00:50:49,000 Vei avea practic o săgeată de la acel buton pentru a al doilea ecran 944 00:50:49,000 --> 00:50:53,000 spunând că atunci când apăsați acest buton pe asta în cazul în care vreau să merg. 945 00:50:53,000 --> 00:50:57,000 La fel cum am făcut clic controlului și târât de a defini aceste puncte de vânzare 946 00:50:57,000 --> 00:51:01,000 am de gând să faci același lucru pentru a defini aceste segues. 947 00:51:01,000 --> 00:51:05,000 >> Vom vedea un exemplu pentru că, de fapt, și înainte de a ne tranziție 948 00:51:05,000 --> 00:51:08,000 de la un ecran la altul iOS este destul de frumos pentru a apela aceasta metoda 949 00:51:08,000 --> 00:51:11,000 numit prepareForSegue, și acest lucru este în cazul în care putem porni 950 00:51:11,000 --> 00:51:14,000 trimiterea datelor de la o aplicație la alta. 951 00:51:14,000 --> 00:51:17,000 În exemplul de mai suntem pe cale să se uite la ea va permite practic ne 952 00:51:17,000 --> 00:51:20,000 pentru a filtra echipe de baseball de ligile și divizări. 953 00:51:20,000 --> 00:51:23,000 Când m-am selectați o ligă, de exemplu, vreau să tranziției 954 00:51:23,000 --> 00:51:25,000 la ecran urmatorul meu unde pot afișa toate diviziile 955 00:51:25,000 --> 00:51:27,000 în liga sau toate echipele diferite. 956 00:51:27,000 --> 00:51:31,000 Am nevoie pentru a trimite la ecranul ce echipele ar trebui să afișeze. 957 00:51:31,000 --> 00:51:35,000 Pentru a face asta am de gând să profite de această metodă aici. 958 00:51:35,000 --> 00:51:39,000 >> În cele din urmă, doar cu un punct aleatoriu pe iOS. 959 00:51:39,000 --> 00:51:41,000 Dacă doriți pentru a stoca date există lucrul numit de date de bază, 960 00:51:41,000 --> 00:51:44,000 care este de fapt un fel de complicat de a lucra cu. 961 00:51:44,000 --> 00:51:47,000 Puteți folosi, de asemenea, SQL pentru a stoca date, 962 00:51:47,000 --> 00:51:51,000 care, din nou, este frumos, dar un fel de pe partea mai complicat de a lucra cu, 963 00:51:51,000 --> 00:51:55,000 dar sprijină, de asemenea iOS aceste lucruri cu adevărat interesante numite liste de proprietate, 964 00:51:55,000 --> 00:52:00,000 și o listă de proprietate este doar un fișier care reprezintă perechi de chei de valoare. 965 00:52:00,000 --> 00:52:03,000 Puteți defini o listă de chei, iar tu spui această cheie va fi o matrice. 966 00:52:03,000 --> 00:52:06,000 Această cheie este de gând să fie un șir, și practic tot ce se poate face 967 00:52:06,000 --> 00:52:10,000 în JSON puteți face în interiorul unei liste de proprietate, 968 00:52:10,000 --> 00:52:14,000 și așa mai departe acest adevăr frumos ne permite să lucrăm cu unele date. 969 00:52:14,000 --> 00:52:18,000 De exemplu, am avea acest Teams.plist pe care am creat-o. 970 00:52:18,000 --> 00:52:22,000 Am creat un fișier nou plist, și eu pot drill jos. 971 00:52:22,000 --> 00:52:26,000 Acesta este un dictionar, aceasta este un dictionar, acestea sunt siruri de caractere, 972 00:52:26,000 --> 00:52:30,000 și astfel aceasta este o reprezentare grafică a placut unui document JSON 973 00:52:30,000 --> 00:52:33,000 sau doar un set de perechi de valori-cheie, 974 00:52:33,000 --> 00:52:37,000 și astfel acest lucru este de date pe care voi fi de lucru cu interiorul aplicația mea. 975 00:52:37,000 --> 00:52:40,000 >> Să vină aici primul. Avem mult mai multe fișiere acum. 976 00:52:40,000 --> 00:52:44,000 Dar hai să vină întâi aici în rezumat. 977 00:52:44,000 --> 00:52:48,000 Storyboard-aici, dacă pot micșora- 978 00:52:48,000 --> 00:52:51,000 putem vedea acum că aceasta este fluxul de aplicația mea. 979 00:52:51,000 --> 00:52:53,000 Am de gând să înceapă primul pe acest ecran. 980 00:52:53,000 --> 00:52:55,000 Am de gând să detalia la acest ecran, 981 00:52:55,000 --> 00:52:58,000 și am de gând să detalia la acest ecran, și putem vedea aici că, dacă am un fel de 982 00:52:58,000 --> 00:53:04,000 muta în jurul valorii de una dintre acestea, am aceste săgeți merge de aici până aici, 983 00:53:04,000 --> 00:53:08,000 și modul în care am defini ca sageata era dacă am mări un pic, 984 00:53:08,000 --> 00:53:12,000 și dacă am venit pe la acest controler vedere, 985 00:53:12,000 --> 00:53:16,000 și aici e o celulă, și vreau să spun că, atunci când atingeți o celulă 986 00:53:16,000 --> 00:53:18,000 Vreau să alunece pe la un alt ecran. 987 00:53:18,000 --> 00:53:21,000 Eu pot doar să țineți apăsată de control, 988 00:53:21,000 --> 00:53:26,000 defila peste un pic, țineți apăsată tasta de control, trageți această celulă de peste si da drumul. 989 00:53:26,000 --> 00:53:30,000 >> Și aici ne spune ce e de tranziție pe care doriți să o utilizați? 990 00:53:30,000 --> 00:53:32,000 Nu doriți să utilizați acel lucru diapozitivul care se numeste împingere? 991 00:53:32,000 --> 00:53:34,000 Vrei să alunece de la partea de jos? 992 00:53:34,000 --> 00:53:36,000 Asta se numește modală. 993 00:53:36,000 --> 00:53:40,000 Și odată ce am faceți clic pe una dintre acestea, se va desena această săgeată pentru mine, 994 00:53:40,000 --> 00:53:44,000 și asta înseamnă că l-am manipulat de fapt, ceea ce se întâmplă atunci când am apăsați acest buton grafic. 995 00:53:44,000 --> 00:53:48,000 Nu am scris nici un cod de a aluneca de fapt, de la un ecran la următorul. 996 00:53:48,000 --> 00:53:51,000 Am definit acest punct de vedere vizual interiorul Generatorul de interfață. 997 00:53:51,000 --> 00:53:55,000 Dacă aș faceți clic pe această săgeată, putem vedea că i-am dat acest lucru un nume. 998 00:53:55,000 --> 00:53:59,000 Am numit-o showDivisions, iar acest lucru este astfel încât să pot cunoaște 999 00:53:59,000 --> 00:54:03,000 ce tranziția este pe cale să apară, și vom vedea de ce, în doar o secundă. 1000 00:54:03,000 --> 00:54:06,000 Asta e modul în care m-am cablat ecrane diferite în aplicația mea. 1001 00:54:06,000 --> 00:54:09,000 Dacă acest lucru ar un buton, de exemplu, mai degrabă decât o vizualizare tabel, 1002 00:54:09,000 --> 00:54:11,000 Aș putea controla faceți clic pe butonul, glisați peste la ecranul următor, 1003 00:54:11,000 --> 00:54:16,000 și că e modul în care pot face navigarea în acest fel. 1004 00:54:16,000 --> 00:54:19,000 >> Foarte repede, dacă am intra în MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 din nou, vom merge pur și simplu pentru a defini o listă de lucruri 1006 00:54:22,000 --> 00:54:26,000 care vor fi afișate în vizualizare tabel. 1007 00:54:26,000 --> 00:54:29,000 Aici vreau să spun că vreau să iei acel fișier plist, 1008 00:54:29,000 --> 00:54:32,000 și vreau să-l încărcați până într-un dicționar, 1009 00:54:32,000 --> 00:54:35,000 și o dată ce ați că dicționarul, am de gând să răspundă la aceste întrebări aceleași din nou. 1010 00:54:35,000 --> 00:54:37,000 Aici este numărul secțiunilor. 1011 00:54:37,000 --> 00:54:41,000 Unul, nu există un rând pentru fiecare liga, iar textul a fiecărei celule 1012 00:54:41,000 --> 00:54:46,000 ar trebui să fie primul, prima liga, liga a doua, și așa mai departe. 1013 00:54:46,000 --> 00:54:51,000 În cele din urmă, am de gând să folosească această metodă pe care tocmai l-am văzut sunat prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 și aceasta este metoda care va fi concediat atunci când am clic pe 1015 00:54:54,000 --> 00:54:57,000 pe unul dintre aceste rânduri și, prin urmare, că activarea tranziție 1016 00:54:57,000 --> 00:54:59,000 că am înființat cu săgeți. 1017 00:54:59,000 --> 00:55:02,000 Aceasta spune că nu pot avea mai multe 1018 00:55:02,000 --> 00:55:05,000 Relațiile de la un ecran la altul. 1019 00:55:05,000 --> 00:55:08,000 Dacă am 2 butoane și fiecare buton vă va duce la un alt ecran 1020 00:55:08,000 --> 00:55:10,000 Am de gând să aibă 2 segues, 1 pentru fiecare buton. 1021 00:55:10,000 --> 00:55:14,000 Dar acest prepareForSegue este, din nou, va fi refolosite 1022 00:55:14,000 --> 00:55:17,000 pentru fiecare dintre relații diferite, astfel că înseamnă că am nevoie de o modalitate de 1023 00:55:17,000 --> 00:55:21,000 de a identifica dacă apăsați butonul prima sau apasati al doilea buton. 1024 00:55:21,000 --> 00:55:25,000 >> Amintiți-vă atunci când i-am dat ca Segue un nume, acest showDivisions, 1025 00:55:25,000 --> 00:55:29,000 asta e cum am acum știu că acest lucru este segue care a fost activat. 1026 00:55:29,000 --> 00:55:32,000 Tot ce vreau sa fac este vreau să spun 1027 00:55:32,000 --> 00:55:35,000 Vreau să dau seama ce am lovit, 1028 00:55:35,000 --> 00:55:38,000 și astfel pentru a obține că, pot spune vreau indexPath pentru rândul selectat, 1029 00:55:38,000 --> 00:55:42,000 amintiți indexPath spune doar în cazul în care am dat click, 1030 00:55:42,000 --> 00:55:47,000 și apoi vreau să spun că vreau să dau seama unde mă duc. 1031 00:55:47,000 --> 00:55:50,000 Acest destinationViewController, asta e o proprietate de Segue. 1032 00:55:50,000 --> 00:55:53,000 Asta e ecranul am de gând să, 1033 00:55:53,000 --> 00:55:56,000 așa că știu că ecranul am de gând să se numeste DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 pentru că am creat această clasă, 1035 00:55:59,000 --> 00:56:02,000 și așa mai departe acum, dacă spun d.divisions 1036 00:56:02,000 --> 00:56:06,000 Sunt setarea acum o proprietate a operatorului vedere sunt pe cale de a merge la. 1037 00:56:06,000 --> 00:56:10,000 Acesta este modul în care eu voi trimite date de la un ecran la un alt ecran. 1038 00:56:10,000 --> 00:56:13,000 >> Doar se uită la acest DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 puteti vedea aici că, în dosarul. h 1040 00:56:16,000 --> 00:56:20,000 există este că diviziuni de proprietate, și asta e ceea ce am practic popularea, 1041 00:56:20,000 --> 00:56:25,000 asa ca asta e modul în care știu că mă afișarea diviziunile corespunzătoare 1042 00:56:25,000 --> 00:56:28,000 liga care am dat click, și, din nou, 1043 00:56:28,000 --> 00:56:31,000 vizualizare tabel reală pare destul de mult la fel, răspunzând doar pe cele 1044 00:56:31,000 --> 00:56:34,000 3 întrebări simple, precum și identificarea 1045 00:56:34,000 --> 00:56:37,000 ceea ce se întâmplă atunci când vă deplasați la următorul ecran. 1046 00:56:37,000 --> 00:56:40,000 Doar câteva alte lucruri aici. 1047 00:56:40,000 --> 00:56:43,000 Ai observat la partea de sus aici, că, mai degrabă decât a spune # include 1048 00:56:43,000 --> 00:56:45,000 Eu acum spun # import. 1049 00:56:45,000 --> 00:56:47,000 Acesta este doar un lucru Objective-C. 1050 00:56:47,000 --> 00:56:52,000 De import este de fapt o versiune mai frumos de includ, 1051 00:56:52,000 --> 00:56:57,000 și, de exemplu, trebuie să știm ce este această clasă, 1052 00:56:57,000 --> 00:57:00,000 asa ca nu pot spune doar DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Dacă nu am hashtag interiorul standardio.c de fișier nostru c.. 1054 00:57:05,000 --> 00:57:07,000 compilatorul nu a avut nici o idee ce a fost printf. 1055 00:57:07,000 --> 00:57:12,000 În mod similar, dacă nu importa DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 compilatorul nu are într-adevăr nici o idee ce este DivisionsViewController. 1057 00:57:16,000 --> 00:57:19,000 Doar asigurați-vă că interiorul fișierelor diferite. M. vă asigurați-vă că pentru a importa 1058 00:57:19,000 --> 00:57:25,000 fișierele corespunzătoare. h, astfel încât compilatorul știe ce se întâmplă. 1059 00:57:25,000 --> 00:57:31,000 >> În cele din urmă, în cele din urmă ceea ce Apple nu este afișa unele date folosind o vedere de web, 1060 00:57:31,000 --> 00:57:35,000 și astfel o vedere de web este un obiect în care puteți încorpora 1061 00:57:35,000 --> 00:57:37,000 un browser web pic interiorul aplicația. 1062 00:57:37,000 --> 00:57:40,000 Tot ce trebuie să faceți este să furnizeze o adresă URL în browser-ul dvs. de web, 1063 00:57:40,000 --> 00:57:43,000 asa ca vreau sa merg la mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 și acesta este modul în care pot accesa pagina de start pentru fiecare echipă, 1065 00:57:46,000 --> 00:57:49,000 și astfel prin trecerea în această adresă URL 1066 00:57:49,000 --> 00:57:52,000 Vizualizare web poate afișa asta pentru mine, și eu pot naviga în jurul valorii de, 1067 00:57:52,000 --> 00:58:01,000 si simulator este în uz de asta. 1068 00:58:01,000 --> 00:58:03,000 Acum, aceasta a venit de la plist meu. 1069 00:58:03,000 --> 00:58:07,000 Dacă am faceți clic pe acest acest lucru a venit de la plist mea, iar acest lucru a fost manipulat de alunecare 1070 00:58:07,000 --> 00:58:09,000 prin definirea acestor segues. 1071 00:58:09,000 --> 00:58:12,000 Am faceți clic pe acest lucru și mai mult una, 1072 00:58:12,000 --> 00:58:15,000 iar acum aici este UIWebView mea, asa ca genul asta 1073 00:58:15,000 --> 00:58:19,000 aici e site-ul pentru URL-ul pe care tocmai am încorporat, 1074 00:58:19,000 --> 00:58:21,000 si nu am avut nimic să se ocupe de nebun. 1075 00:58:21,000 --> 00:58:24,000 Acesta este modul de a afișa o pagină web. 1076 00:58:24,000 --> 00:58:27,000 Lucruri ca acest buton pe aici sunt, de asemenea, dat la mine 1077 00:58:27,000 --> 00:58:33,000 complet gratuit pentru ca am definit aceste relații folosind segues. 1078 00:58:33,000 --> 00:58:37,000 >> Alte întrebări? Da. 1079 00:58:37,000 --> 00:58:40,000 [Student] Deci, atunci când utilizați alloc, nu va trebui să ceva gratis? 1080 00:58:40,000 --> 00:58:43,000 Exact, atunci când apelați alloc și init nu trebuie să-l elibereze. 1081 00:58:43,000 --> 00:58:46,000 IOS este de gând să se ocupe de toate astea pentru tine. 1082 00:58:46,000 --> 00:58:51,000 E minunat, și tu nu ești a rupe orice norme. Da. 1083 00:58:51,000 --> 00:58:54,000 [Student] Dacă ar fi să includă mai multe echipe, care ar putea încăpea pe ecran, 1084 00:58:54,000 --> 00:58:58,000 ar avea în mod automat o opțiune de parcurgere, sau e ceva ce trebuie să adăugați? 1085 00:58:58,000 --> 00:59:01,000 Exact, dacă aș fi avut mai multe echipe, de exemplu, s-ar ocupa în mod automat 1086 00:59:01,000 --> 00:59:04,000 defilare pentru mine, și toate preocupările de performanță 1087 00:59:04,000 --> 00:59:08,000 cu masă mare sunt, de asemenea, manipulate în totalitate pentru mine. 1088 00:59:08,000 --> 00:59:11,000 >> Alte întrebări? 1089 00:59:11,000 --> 00:59:13,000 Toate acest cod va fi postat. 1090 00:59:13,000 --> 00:59:16,000 Am un fel de glosat peste un pic de detalii minore mai, 1091 00:59:16,000 --> 00:59:19,000 dar lucruri de genul stabilirea unor proprietăți pentru vizualizarea web 1092 00:59:19,000 --> 00:59:22,000 sunt doar lucruri pe care le puteți obține prin navigarea documentația Apple, 1093 00:59:22,000 --> 00:59:24,000 care este foarte, foarte frumos expus. 1094 00:59:24,000 --> 00:59:27,000 Ei au o mulțime de exemple de aplicatii si exemplu uzanțele 1095 00:59:27,000 --> 00:59:34,000 de API-uri diferite, deci cu siguranta citi cu atenție cele dacă poți. 1096 00:59:34,000 --> 00:59:36,000 Doar cateva link-uri utile pe care le-ar putea dori să aruncăm o privire la. 1097 00:59:36,000 --> 00:59:38,000 Acestea sunt câteva ghiduri de documentare. 1098 00:59:38,000 --> 00:59:41,000 URL-urile sunt masive, așa că scurtat. 1099 00:59:41,000 --> 00:59:44,000 Aceasta este prima biblioteca intreaga de documentare. 1100 00:59:44,000 --> 00:59:46,000 Nu e baruri mici de căutare, așa că, dacă începeți să tastați butonul 1101 00:59:46,000 --> 00:59:50,000 acesta va începe oferindu-vă toate informațiile despre toate lucrurile pe care le pot face cu un buton. 1102 00:59:50,000 --> 00:59:53,000 Am inclus, de asemenea, de programare Tabelul Vizualizare Ghid. 1103 00:59:53,000 --> 00:59:56,000 Se ocupa de masă vizualizări în detaliu mult mai mult, 1104 00:59:56,000 --> 01:00:00,000 cum să faci lucruri de genul adăuga dinamic celule sau celule edita sau a le elimina. 1105 01:00:00,000 --> 01:00:02,000 >> Există o mulțime de exemple de aplicatii de la Apple, care vă va arăta cum să faci asta, 1106 01:00:02,000 --> 01:00:05,000 și, în final, aceasta este ultima liniile directoare Human Interface, 1107 01:00:05,000 --> 01:00:09,000 și acest lucru este de fapt o discuție de componente UI, 1108 01:00:09,000 --> 01:00:12,000 lucruri ca să nu fac un buton care este 4 pixeli de 4 pixeli. 1109 01:00:12,000 --> 01:00:15,000 Asta-i o idee rea, și alte lucruri pe care Apple vrea să faci 1110 01:00:15,000 --> 01:00:18,000 pentru a încuraja design bun. 1111 01:00:18,000 --> 01:00:23,000 >> Orice întrebări ultimele înainte de a ne termina? 1112 01:00:23,000 --> 01:00:27,000 În regulă, simti cu siguranta liber să-Mergem să aibă etichete speciale pe Discuss. 1113 01:00:27,000 --> 01:00:30,000 Vom avea o iOS una, astfel încât simti cu siguranta liber pentru a utiliza asta. 1114 01:00:30,000 --> 01:00:34,000 Dacă doriți să lucrați cu colegii dvs. pe proiecte 1115 01:00:34,000 --> 01:00:37,000 sau ajuta dau seama unele chestii aleatoare iOS 1116 01:00:37,000 --> 01:00:40,000 nu ezitați să-mi e-mail, și ia cunoștință cu siguranta tot on-line, deoarece codul 1117 01:00:40,000 --> 01:00:43,000 doar în interesul timp am un fel de glosat peste mai mult 1118 01:00:43,000 --> 01:00:45,000 detalii fine grained de lucruri. 1119 01:00:45,000 --> 01:00:47,000 Dar dacă nu, atunci noroc bun pe proiectele dumneavoastră iOS, și sper că vom avea 1120 01:00:47,000 --> 01:00:53,000 un aflux mare de aplicații în App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]