RHED SHI: Dobrodošli glej CS50 seminar - Uvod v iOS. Hvala, ker ste prišli. Upam, da si ravno tako navdušena kot sem o iOS. Lani sem vzel CS50 kot letniku, in sem v bistvu naučil iOS za moje končni projekt. In bilo je precej - No, to ni bilo enostavno, vendar obstajajo veliko podpore vajah na spletu. In res upam, da s tem seminar, bom dal fantje glava začeti razvoj iOS Torej, v smislu razvoja iOS, obstajata dve glavni stvari, ki jih želijo pokritje danes. Prvič, jezik - jezik, se bo v Objective-C. Bomo dejansko slišali nekaj res razburljivo. Torej, se lahko pridružite celotno Apple skupnost razvijalcev in zgraditi nekaj res super apps. Tudi iOS 7 je lepa, upajmo, za nekatere od vas. Ampak to je sporno, vem. In predvsem, kaj želim storiti, je vodnik ste skozi Objective-C, pa tudi Xcode, ki je integriran razvojno okolje, ki ga bo delajo v za iOS. In tako, samo beseda o Objective-C. V bistvu, to je točno isto kot C, vendar z veliko drugih stvari. In tako, bolj strogo, da je dejansko -super niz C. Torej, vse, kar ste lahko storite v C prav zdaj, ki je v bistvu všeč pset 0 do 6, ki jih lahko storite v Objective-C. Torej, ne čutijo strah glede tega novega jezik, da boš naučiti. Ste že zajela veliko od tega, ker ste vse narejeno C Pri tem preteklost semester, razen zdaj greste da imajo veliko več delati. In jaz bom samo, da vas vodi skozi Nekaj ​​primerov izpostaviti nekatere ključnih razlik, ki sem jih našel so bile Zelo pomembno je, ko sem se naučil Objective-C lani. No, pravzaprav, tako, druga točka je, Objective-C je, seveda, objektno usmerjen. In bomo razpravljali malo o tem, kaj to pomeni kasneje. V bistvu, to je kot kako ste delali z konstruktov v tem zadnjem pset, z vozlišča in podobno drugi take stvari. Razen v Objective-C, je vse objekt, in si bo ki poteka okoli napotke za predmete raje od vrednosti samih. Torej, to je samo nekaj pomembnega da v mislih. Torej, zakaj ne bi začeli z nekaj Razlike v sintakse med C in Cilj-C? Želim poudariti # include si Veš, standardna io.h v C in C + +, z različica Objective-C, ki, ki je # import, nato pa nekakšen datoteka z glavo. V tem primeru bi bilo UIKit, Veš, poševnica UIKit.h. Prav tako bi bilo, veste, MKMapview da boste poševnica MKMapview.h, če želite narediti, kot, zemljevid notranjosti vašega app. Podobne stvari. Torej, pomembno je vključevati se je zdaj spremenilo uvoziti. Ampak ideja še vedno ostaja. Boš se uvaža neko v glavi datoteke v programu. Prav tako želim izpostaviti razliko med printf in NSLog. Vendar pa, kot smo že povedali, Objective-C je strogo super-set C, kar pomeni, da obstaja printf v Objective-C, preveč. Ampak, večina ljudi ne uporabimo. Večina ljudi uporablja to NSLog, saj vam daje čas, žig, in bomo videli je v akciji kasneje. Ampak, to je na splošno bolj uporaben način, da natisnete spremenljivk. In tudi jaz želim poudariti, da NSLog traja v samo isti ograd vrednosti, kot je printf počne - tako da% d je za notr, % F je za likvidna sredstva. Vendar pa bi rad izpostavil prav ta zadnja - NSLog% na znak - da je ograda za objekt. In kot sem rekel prej, Objective-C obravnava precej večinoma v objektih, in da se bo to zgodilo v uporabi, ko želite natisniti, morda, morda NSArray, ali NSDictionary, ali NSString. Torej, tudi opazili, da je v našem NSLog Izjava imamo na znak pred citata - to je pomenilo, da so strune, zdaj, v Objective-C so predmeti. Niso več zgolj značil zvezde. Oni so predmeti in so obravnavati kot tako. Torej, to je res pomembno, da pri uporabljate NSLog je potrebno v NS Niz, kar pomeni, da boste imeli vključiti AT pred vašimi narekovaji. In to je, zakaj vidiš, tukaj, v vseh Moja funkcija zahteva, da se ta NSLog sem imajo AT pred narekovajev, čeprav čeprav so% d in% f je vsi isti iz C. Kakšna vprašanja? Bom poskusil, da gredo skozi to hitro, tako , da bomo lahko imeli več časa za delo z Xcode in Objective-C, tako da da lahko fantje dobili več seznanjeni z njo. Naprej, želim izpostaviti nekaj konceptualno pomembna. Torej, v C, večina stvari so funkcije. Naredimo klic funkcije. Izjavljamo Funkcije na ta način, z tip donos, potem Ime funkcije, oklepaji in nato ne glede na argumente in vrsta ti argumenti, ki jih želimo prenesti noter In Objective-C, ker je vse je predmet ali razred - tako razred in predmet sta izraza, ki so večinoma sinonim za medsebojno tako da jih lahko uporabite kot sopomenki celotnem seminarju. Ampak, boste videli, da imamo metode v Cilj-C namesto funkcije. In metode pripadajo predmetov. Torej, samo tako, morda bi na primer, vozlišče - naša vrsta [neslišno] Vozel iz pset 6 ali 5 - imamo besedo, premoženja, ali naslednje vozlišče kazalec. Metode so preprosto deluje znotraj od neke strukture. Torej, v tem primeru, bi struktura predmet, in nato metoda nekaj, kar spada v predmet. In to je, kako bi se razglasi, vrsta, metoda. Ti bi začeli s ponovno, povratna tip - tako sem poskušal barve zakonika ključne besede, tukaj, tako da fantje lahko vidite vsaj oblikovanja podobnosti med funkcijo izjave in izjave metodo. Torej, da začnete z, saj veste, povratna tip - v tem primeru je matrika, ali NSArray kazalec - in potem imate to metodo. In potem, kaj je zanimivo, tukaj je da namesto da oklepaju smo so te debelo črevo. In potem, pred našimi argumenti, smo dal, še enkrat, v oklepaju tip našega argumenta. Torej, zdaj bom poskušal narediti Primerjava med veste, n in Številka, ker oni tako kot ints. In potem druga je tip NSUInteger. In potem, z Objective-C, ko vam želijo imeti več argumentov v vaša klavzula metoda, ti, nekako, jih izločiti nekako takole - Nisem povsem prepričan, kako to opisati, ampak to je dober primer, kako imajo lahko več argumentov tam. Lahko bi, seveda, samo v celoti prezreti andArray debelo črevo NSArray matrika, če si hotel samo metodo da je potrebno v enem argumentu. Da, vprašanje. PUBLIKA: Ali sta NSUInteger in NSArray argumenti, ki jih je mogoče sprejeti v v NSArray? RHED SHI: Da. Torej, naj ti razložim. Torej, ja. Torej je vprašanje, so NSUInteger in NSArray * tipov argumentov, in to je pravilno. Torej, ste si vedno želeli, da določite, kaj tip je argument. In tukaj, sem poskušal, da vam predstavim z nekaterimi sintakso in vocab leta Objective-C, tako tistih, ki so dejanske vrste da boste opravka. In kot boste opazili, nizi ni več, vrsta, preproste bracket stvari. Oni so predmeti. Čeprav, če gremo na naslednjo slide, lahko vidimo, da smo lahko hard-code NSArray v Objective-C, preprosto simbola na pred oklepajih. Nisem, pravzaprav povsem prepričani, ali I skladenjsko težko kodiran niz pravilno za različico C, ampak to je naj bi bilo v C matriko. Torej, to je, kako bi, saj veš, morda uporabljajo funkcije ali metode, ki smo jih ustvarili prej. Kajne? Torej, to je, če smo se razglasi našo Funkcija in naš način. In zdaj smo želeli, da jih uporabljajo v Naš program, in to kako bi to naredil. Torej, v C, bi imeli, saj veš, morda, int b, in jo nastavite na enako funkcijo, in nato podaš v argumentov. V Objective-C, to je precej precej isto stvar. Imate NSArray * my_array, in to je bo enaka - sedaj, le Razlika je ta objekt stvar, ki sem jih izpostavila v rumeno in kot lahko vidite, v C pa je nobena druga rumena beseda. In to zato, ker pripadajo metode z določenega objekta. Tako da je, zakaj moram imeti predmeta da, nekako, zahteva ta metoda število nič, in nato NSArray, b, c, d. Kakršna koli vprašanja o tem? Bomo videli, te koncepte v akciji Kmalu, ko smo šli v demo. OK. Zdaj bi rad govoril malo na kratko o Xcode 5, ki je integrirano razvojno okolje da boste delali z. Vem, da vas veliko, ali pa nekateri izmed vas, nimajo Mac, ki je problem ker Xcode ni na voljo za Windows in PC. Ne vprašajte me zakaj, ampak verjetno - Ja, corporate. Karkoli. Ampak vseeno, zato se opravičujem, če nekateri imate, da prenesete neke vrste virtualni stroj za Mac v Da teči Xcode 5. Ampak to je zelo eleganten programske opreme za uporabo. In tako, preden se potopite v kakršno koli iz demo, samo želim, da vam je pokazal sliko o tem, kaj Xcode izgleda v vašem okno, nato pa govori tudi o kaj ves ta prostor. Torej, to je nekako tako kot za učenje, kako uporabljate Microsoft Word, razen hočeš se seznanijo z vsemi različnih stvari, ki se dogaja. Torej, najprej sem te hotel opozoriti na orodni vrstici na vrhu. Videli boste, da je na vrhu, boste morali ime datoteke - ali, pravzaprav ime vašega projekta in potem ti je ime datoteke. Se seznani z igro in Gumbi za zaustavitev. To so tisti, ki se boste uporabo zagnati aplikacijo na Simulator - iOS simulator. To avtomatično prihaja z Xcode 5, tako da vam ni treba skrbeti, prenos neke vrste simulatorja. Šele, ko pritisnete igro in nato teče vaš app. In si lahko igral z vami, in boste videli, kako deluje kasneje. In nato, v sredini, je seveda kjer vse vaše lepe koda bo šel. In potem, na levi strani, boste še to, nekako, mapa - navigacija - in potem, boste tudi videli, da skupaj s simbolom mape, obstaja kup drugih ikon tam, da bo koristno kasneje. In potem, na desni strani je uporabnost področje, kjer lahko delate z nekatere predmete in navedite, vas Veš, kaj bi morala barva, kaj pisava Besedilo mora biti, et cetera. Čeprav je vse, kar si naredil na območju, utility, lahko storiti v kodi, kot dobro. In tako bom šel skozi dve primeri uporabe, preprosto, brez kode na vse - ali zelo majhna številka, - verzi vso programsko kodo, samo zato, da vi veste, kaj lahko in česa ne, v Xcode in Objective-C. In nato, končno, navzdol na dnu, imate prostor za odpravljanje napak. Torej, vam ni treba več teči GDB, et cetera, za programe. To samodejno naredi za vas. In si lahko tudi natisnete stvari na tem področju. Torej dejansko, kasneje pa bomo šli skozi mario.c, če vi še spomnite da v Xcode. Tako da bi moralo biti zabavno. In potem, samo, da ga pripelje nazaj Objective-C, želim poudariti, kaj lahko to storite z IF stavkov. Torej, veš, ker Objective-C je nadgradnja C, vse, kar morate storiti, je, dobesedno, enako kot C. Ravnokar ste imajo majhne razlike. Torej, boste opazili obrazec za, če Izjava je še vedno isti - moraš če je, potem imate oklepaje z stanje znotraj, ga nato zaviti oklepaji za karkoli želeli narediti znotraj tam. Vendar pa sem hotel dati to stran gor Tukaj, preprosto za ponazoritev, da zato, ker imamo opravka s predmeti zdaj, bomo morali uporabiti te stvari imenovana kot, enak niz, ki je po naključju, metoda niz ali NSString objekt. Torej, beseda, v tem primeru, je NSString nasprotujejo, in ima metodo, imenovano je enak niz, nato pa bomo mimo v trdi kodiran niz za prikaz ali so tisti, ki je enaka med seboj. Kakšna vprašanja? OK. In hočem, da gredo čez za tako izjavo. Tako, na primer, če bi želeli zanke po dolžini niza v C, to morajo biti seznanjeni s tabo. In v Objective-C, ne želim izpostaviti to, nekako, Metoda se imenuje število. No, pravzaprav, kaj mi vzemite nazaj. Štetje je metoda matrike. Vendar pa je to še posebej lastnost polja, ki je, zakaj ste Lahko uporabite dot zapis. Vendar ne želim, da bi dobili v preveč Ta konceptualni stvari, samo želim, da vam pokaže, kako bi stvari videti kot v Objective-C v primerjavi C. In tudi jaz želim poudariti, da čeprav sem bil z uporabo NSUInteger Pred vsemi mojimi i-ih v Objective-C, lahko uporabite tudi int, int, ker je v celoti velja v Objective-C, prav tako. Ja? PUBLIKA: Ali je to samo slogovna, ali je - RHED SHI: Ja. Torej, kot boste videli - Tako je bilo vprašanje je, da samo stilistično vprašanje. Kot boste videli, da imam, nekako, zvezda zvezdica stvar navzdol na dnu, ter ta povezava vas popelje do Stack Overflow oblikujejo, kadar nekdo razloži Razlika med int pri NSInteger in NSUInteger. In tako, si lahko preberete več o tem kasneje. Te diapozitivi bo, seveda, so vam na voljo. Pa poglejmo. OK, super. Torej, je to vključeno tudi v diapozitiv ker sem mislil, da je to velik Spletna stran, ki vam predstavi za Objective-C sintakso. Torej, pravzaprav, zakaj ne gremo na Chrome in si oglejte to spletno stran? Prav. Torej, kaj bi rad, da ti pokažem Fantje tukaj je ta podoba. Torej, to je, nekako, bo kaj boste videli notranjost koli Xcode datoteke. Pravzaprav, zakaj ne vzemite trenutek, da, nekako, da to prijavite Torej, ta knjiga - To je objekt, ki imamo opravka. In potem, to je očitno bo podedovali iz kakšnega drugega predmeta, vendar vam ni treba skrbeti za to. In potem je morda ima nekatere spremenljivke članice. Važno Rad bi vam pokazal, je metode, na primer, tukaj. Torej, so metode primerka označeni s tem negativnim predznakom. In potem, kot boste opazili, da smo že začenjajo videti paradigmo izjava metodo, kajne? Tip donos, ime metode, in potem tip argumenta in nato ime argumenta. In ta minus pomeni, da je Postopek primer, kar pomeni, da Te metode so na voljo le predmeti, ki so bili uporabiti. Za kontrast, ki, metode s plusom prijavite se pred njimi so razred metode, kar pomeni, da lahko pokličete te metode, tudi če nimate še predmet ustvarjen. Torej, za jasen primer, NSString je razred. In lahko pokličete, na primer, Metode razreda na NSString - Dejansko, kot, beseda NSString. Vendar pa je, da za uporabo teh Metode, ki jih dejansko morali ustvariti niz. Na primer, NSString zvezda niz enak na narekovajem, zdravo svet. In potem, lahko uporabite te metode - Metode primer - o tem Hello World nizu. Tako, da je razlika med metode stopnje in metode razreda. In, pravkar smo pokriti ta del. Lastnosti so še ena stvar, ki so Notranjost predmetov, v bistvu. In jih razglasi z na nepremičnino ključno besedo. Imate te možnosti, tukaj, da bom razložil kasneje, ko gremo v demo. Ja? Zdravo. PUBLIKA: Bi lahko povečate, prosim? RHED SHI: Oh ja. Žal mi je. PUBLIKA: Hvala. RHED SHI: To bi bilo veliko bolje. OBČINSTVO: Ja. Hvala vam. RHED SHI: Ja, prosim, me spomni, če Pozabil sem, da povečate ali pomanjšate. Torej, to je vse, kar sem želel da ti pokažem za - vau, to je veliko - za to spletno stran. Torej, vrnimo se na naše diapozitive. Pravzaprav, zdaj pa si vzemite trenutek da se potopite v demo. Torej, bomo začeli z Novi projekt Xcode. Torej, če boste odprli Xcode na vseh vaše naprave, bi si vzamete nekaj stran, kjer piše, kot so, bodisi odprt do obstoječega projekta ali novo projekt, zato bi morali kliknite nov projekt. In potem, bi morala biti si na ta zaslon. Ja? PUBLIKA: Če ne bomo imeli Mac, mi smo nekako umiri? RHED SHI: Ali pa poglej na z nekom, ja. Ja. Lahko se umiri, preveč. OK. Torej, kaj bomo storili prvič, zdaj, je, pravzaprav, bomo storili enoten pogled na vloge. Torej, če boste opazili, kaj je super o Xcode in Apple podpore razvijalci je, da imate veliko Predloge za delo z že. Lahko bi, na primer, da master-detail aplikacije. Lahko naredite igro - in dejansko, ne bom se spuščal v igrah, ker so igre drugačna zgodba za razvoj iOS. In oni so nekako ločiti, tako da ne bom šel v to. Potem, ko ste na osnovi stran aplikacije. Imate aplikacijo zavihek - tako všeč, na primer Bank of America Verjetno je, recimo, zavihki app. To je tisti, kjer imate gumbi na dnu. In potem imate Sprite Kit igro. Ali lahko delate iz nič, kar je tisto, kar bomo storili kasneje. Ampak kaj je, prvič, začnite z enoten pogled na vloge. Nato vas bo vprašal za ime izdelka, in bomo lahko samo naredi test. Ime organizacije - Tako, ime organizacije, identifikator podjetje - tistih, ki so pomembne, če greste da vaš app na App Store. Razen, da je vaša koda se bo teči v najlepšem redu brez tega. To bo pomembno, če ti želeli - tako, per se, kot, da vaš app na telefon ali kaj podobnega, in preizkus ven, saj veš, v resničnem življenju - To bo pomembno. To kaže, da je običajno povezana z neke vrste developer računa z Apple. In tako, vem, verjetno, da vas veliko ne bo imel razvijalec računov. Vem, da univerza ima eno. Mislim, CS ima. Vendar pa lahko email mi in jaz bom poskusil da ugotovimo, da je za vas. Toda zdaj sem samo dal v nekaj ograd stvari tukaj. In lahko, seveda, tukaj, izberite ali želite, da je samo v iPhone v iPad, ali oboje - univerzalna uporaba. Torej, za zdaj, naredimo univerzalni, samo videti obe strani platforme. Pa poglejmo. Torej, zdaj, grem, da shranite je v neke vrste mape. Ni važno, kje - ti Vedno lahko premaknete pozneje. In sedaj, smo pripeljali na naši Xcode projekta. Jaz ne bi skrbeti za vse to. Jaz bi predlagal, da ne dotika katerega koli od to, če veš, kaj delaš. Torej, vse to, kar ignorirati večinoma. Vam ne bo potrebno dotakniti, in če Ali menite, nered nekaj stvari tukaj, da postane precej zapleteno. Torej, zakaj ne gledamo v datoteke na leva stran v našem navigator. Tukaj imamo AppDelegate.h. Imamo AppDelegate.m je tako, kot boste Obvestilo smo header datoteke, ki konča v dot h, in imamo Izvajanje - pravzaprav, mi zoom noter OK. Dovolite mi, da povečate prijavite Dobro, da ste header datoteke in imate izvajanju datotek. Pravzaprav - OK. To je malo čudno, vendar nosijo s seboj. Potem pa, ker smo izbrali en sam pogled prošnja, da bomo lahko delo s snemalno knjigo. Torej, storyboard je nekaj, kar Apple je prišel gor, da resnično pomagajo razvijalci hitro izdelavo prototipa njihove vloge. Torej, to je, kjer si lahko ustvarite app brez pisanja ene vrstice kode. Vendar pa se v našem enem pogledu uporabe, nam, seveda, imajo datoteke za po našem mnenju, ki je krmilnik pogled. Torej, imamo glavo in Izvajanje datoteka, tukaj. In bom pomanjšanje sedaj, saj bomo morali delati v snemalni knjigi. Torej, tukaj je naš pogled. Če želimo, preprosto zaženite aplikacijo prav zdaj, ni veliko razburljivo dogaja. Torej, boste videli ta beli zaslon. OK? In v našem področju gospodarskih javnih služb, lahko dodamo kup različnih stvari z njo. Torej, ko imate opravka z zasloni v iOS, krmilniki pogled so predmeti, ki jih zajame, nekako, vaše mnenje. Torej, krmilnik pogled vedno je lastnost, imenovano pogled. In da je pogled, običajno vsebuje, Veš, kaj si želeli videti na zaslonu. Torej, dobro, Začniva s tem da, Morda, morda nalepka. Torej, kaj je dal nalepko na tam - ga držijo v sredini. Torej, zdaj, ko sem kliknil na etiketi, I Lahko greš v lastnosti inšpektorja in začeti spreminjati svoje vrednosti. Recimo ji CS50 barve. In sem se lahko spremeni tudi pisavo. Torej, namesto da bi sistem, ki je privzeto, lahko naredimo eno po meri. Mi lahko spremenite - Veš, UltraLight, da bo 32. In potem bomo lahko naše okno večji. PUBLIKA: Ali mislite, da lahko povečate V samo nekaj več, morda? RHED SHI: Ja? OK. PUBLIKA: Samo dotaknite? RHED SHI: Pa poglejmo. Ali to delo? PUBLIKA: Samo mimo Xcode? RHED SHI: Seveda. OK. Super. PUBLIKA: nalepka pod? Nalepka? RHED SHI: Kaj je to? PUBLIKA: Kaj drop-down je nalepka pod? RHED SHI: Torej, je bilo vprašanje, kaj drop-down je nalepka pod? To bi bilo preprosto, pod tukaj. Mislim, da je kocka stvar. Ampak ponavadi, to je privzeta - Grem dol dokler ne najdem oznake. Ja. Torej, zdaj imamo etiketo. Greva na sredino. In Xcode nam daje smernice za centriranje predmetov. Torej, zdaj pa znova zagnati našo kodo. Takole. Torej, imamo CS50 barve. In zdaj, kaj je dal na gumb tam, kajne? Ker želimo, da bi To interaktivno. Torej, kaj je dal gumb tukaj. In bomo to imenujemo gumb "Kliknite tu za nadaljevanje. "Mi bomo osredotočali tudi Pravzaprav, to je že v sredini. Ja. Torej, zdaj imamo gumb. In če bomo spet teči to, gremo da imajo lepo malo gumb tukaj. In sem lahko kliknete, vendar tega ne naredi karkoli, ker nismo storili karkoli z gumbom še. Torej, da ustvarite nov pogled, kajne? Torej, recimo, da želim, da se dotaknete da gumb in želim, da pojdite na drugo stran - še en pogled. Kaj bom storiti, je, da lahko ustvarite krmilnik pogled, kajne? Zdaj bom kliknite na gumb moji, in nato, Važno je, da bom klik - ali - Ja, pritisnite nadzor na moji tipkovnici. Control. Kliknite na gumb in povlecite. Torej, ne pozabite, da držite tipko za upravljanje. Dajva še enkrat. Torej, imajo nadzor, kliknite in povlecite na tisto, kar želite narediti. OK. In zdaj, imam več možnosti tukaj. Ne morem niti potiskanje, ali lahko storim modal, ali lahko storim meri. Push le, če imate navigacijski krmilnik. Zdaj je naša zelo prvi pogled krmilnik ne znotraj kateremkoli navigacijski krmilnik. Torej, krmilnik navigacija je ena ki vam daje nazaj gumb na iOS app, kjer ste, veste, da je top, nekako, debela bar - kjer lahko greš nazaj, ali naprej, in tako naprej. Zdaj nimam tega. In tako, da je, zakaj ne morem narediti push. Torej, sem kliknil na pritiskom naključju, sem. In dejansko, tekajmo kodo, in naj bi crash na mene. Samo, če sem pritisnite gumb čeprav, tako - prav. Torej, to je slabo. In, kot lahko vidite, tu smo še sporočilo o napaki. Tako lahko, "se sme uporabljati le Push segues ko vir krmilnik upravlja primerek UI navigacijski krmilnik. " Torej, ker to ni bil znotraj navigacijski krmilnik, Nisem mogel storiti. Torej, zdaj, grem nazaj mapa, vrača v snemalni knjigi. PUBLIKA: Kaj je navigacija krmilnik, spet? RHED SHI: Torej, zdaj ti bom pokazal. Pa poglejmo. Torej, jaz grem, da kliknete na ta pogled krmilnik, nato pa bom šel do izdelka - pravzaprav ne, žal - urednik. In jaz grem v - Pravzaprav sem kliknite na to? Ne Takole. Jaz grem gor v urejevalniku, dol vlagati v, in nato navigacija krmilnik. OK. In moj delovni prostor zgleda res grdo, tako da je čist to gor. Torej, vse to je storyboard. In na ta način - OK, stop - Jaz lahko hitro zgraditi nekaj kot je ta. In potem, zdaj lahko grem nazaj, veš? Ampak to je nekako dolgočasno, kajne? Torej, kaj želim storiti, je, nočem narediti, samo preprosto, pogled krmilnik. Recimo, da sem želel, da dejansko lahko Pogled na tabelo krmilnik, da bom lahko dal v nekaj lepih barv, v tabeli. Torej, zdaj, ko sem dal v mojem pogledu tabele krmilnik, moram ga priključite nazaj od tega gumba, da Pogled na krmilnik. Torej moram narediti svoj nadzor, kliknite, povlecite stvar znova. In zdaj ne morem storiti potiskanje, ker sem embed je notranjost krmilnika navigacije. PUBLIKA: Navigation krmilnik samo vam omogoča, da gredo iz kraja v kraj? RHED SHI: Da. Torej, bolj tehnično, to je predmet, kjer - tako, notranjost navigacijo krmilnik predmet tega sledi matrike. In da je matrika ima vse poznejše ogled krmilnike. Zato, ko pritisnete še enkrat, gre nazaj na prejšnjo stran. Ker upravljavec navigacija predmet ali koda, ki skrbi za ta objekt, je niz, ki ohranja sledenje teh krmilnikov pogled, in lahko potem veš, DQ pogled Regulator in vam dal nazaj prejšnja. Torej, to je tehnična zadeva, ampak - in ti bom pokazal kasneje kodo, če bomo imeli čas. Sem nekako zmanjkuje na čas, ampak - Torej, z pogledu tabele, kaj lahko storimo, je - To je običajno samodejno nastavi Dynamic Prototype - bomo, da bo Statični celice, drugače bomo zašli v težave. In potem, recimo, da bom da ima en odsek. Torej, sekcije je všeč - če ste kdaj videli glasbe app, ko imate umetniki, bi oddelki se je skozi Z's - črke - in potem, veste, individualna Vrstice bo imena izvajalca. In tako, kaj je kul tukaj, je, da sem lahko dostop do vseh predmetov v notranjosti moj snemalni knjigi skozi to spustnem meniju, preveč. Torej, jaz grem, da kliknete na mojem oddelku, in želim, saj veš, morda pet vrstic. In potem, znotraj vsake vrste, Rad bi dal nalepko. In bom poklical ta Blue. In potem bi rad dal pogled UI, si vem, morda, nekako malo prostora. Tako da sem lahko pokažemo ljudem, Predogled barve. In jaz bom šel nazaj v nepremičnine in spremenite to barvo, oh, ne vem Veš, tole. In potem, opazili tudi tukaj, ko imam dodatki, imam lahko veliko različnih dodatkov ki jih po navadi videli. Kazalnik razkritje podrobnosti, ali kljukica, ali pa preprosto samo detajl. Torej, morda lahko storimo, kot so, na razkritje indikator, npr. In potem, zakaj ne vzamemo te, izvod jih prilepite, in jih v Naslednja vrstica tabele. Torej, lahko rečemo To rumena. In morda sem morala razširiti to. Naj bo rumeno. In na ta način, bomo lahko kopirate prilepiti našo pot navzdol. Kaj je bilo to? Purple. Torej, vse to so tipični CS50 barv, ki ste jih videli v razredu - pravzaprav, oprostite - ali na spletni strani. Upajmo, da vi vidite kaj delam tukaj. OK. Zadnja. PUBLIKA: Kako ste dodali vrstica na začetku? RHED SHI: Torej, je bilo vprašanje, kako Poskusil sem dodati vrstico na začetku? Šel sem v tej rubriki tabele - ali pa sem lahko izberete del tabele - in potem, tukaj, sem posodobiti število vrstic. In mi upamo, da bo to delovalo. OK. Poglejmo, če to deluje. Oh, odlično, super. OK. Medtem ko sem bil zgradim svoj demo, nekateri Stvari niso bili usklajeni, tako da, hvala za aplavz. Ja. Torej, poglejmo. Naredili bomo to devet šele, da bi vse - ali dejansko, naj samo vključite vse to v razkritja kazalniki. In potem, kaj bi rad, da ti pokažem, preveč, je bilo, kako sem lahko vsak od teh vrstice tabel in jih medsebojno - oh. Ne Oh. Prav tako bi rad, da ti pokažem - Tukaj sem lahko dal naslov mojega navigacijski krmilnik, kajne? Torej v bistvu, boste opazili, takoj ko sem Vgrajeni tega pogleda krmilnik znotraj upravljavca navigacije, bomo videli Ta navigacijski vrstici na vrhu našega storyboard zastopanje od upravljavca pogled. In tako, to nam daje, kot so, vizualni, nekako, vodnik po našem vidnem zaslonu. To se očitno dogaja, da lahko navigacijsko vrstico. In tisto, kar želim storiti hitro, Zdaj, se uvrsti v drugo - tako da je ta pogled tabele krmilnik sem ga ki ima eno od teh in ga povlečete tu, in to je tisto, kar mi je omogočila hitro, res, ustvarite pogled tabele krmilnik. Če imamo čas, čeprav, boste vidim, da je programsko, to je malce bolj zapleteno izdelati tabelo Pogled krmilnik, ker tam so nekaj metod, ki so potrebni za vas, nekako, pisati v vrstnem redu za pogledu tabele Regulator je treba pravilno prikazani. Vendar pa sem hotel pokazati, zdaj, Primer, kjer, če vzamem to, na primer - Sem dal v drug pogled krmilnik. In zdaj, recimo, da želim, da nadzor alt moja prva modra miza vrstica tukaj. In hočem, da to imenujemo Blue. In potem - Pa poglejmo. Jaz sem ob pogledu zdaj, in sem lahko spremenite ozadje modro. In tako obvestilo, tukaj, to drop-down Meni tudi vam hierarhijo vse teh objektov. Tako pomembna stvar je tudi omeniti, tukaj, je, da vse te stvari tukaj - ta pogled tabele krmilnik, namizni pogled, pogled miza oddelek, pogled na tabelo celic - vse to so predmetov, v kodi. Torej, veš, nalepka zdaj je pod pogled na vsebino, et cetera. Tako naprej in tako naprej. Torej, če tečemo to kodo bi morali videti nekaj - da vidimo, če je to - ja. Torej, gremo. Ampak, če ne bomo storili, da nobena dela te druge stvari. Kajne? Torej, le ta deluje. In zaradi časa, ne bom gredo v, veste, dajanje navzdol tudi drugim. In to je konec, nekako, storyboard - tisto, kar sem želel pokazati ste za snemalno knjigo. In imam obdelovati primer, pravzaprav tukaj. Torej, to je storyboard da sem se prej. Torej, kot lahko vidite, da je to moj navigacijski krmilnik. Potem sem imel prvi pogled krmilnik, Nato sem imel svoj pogled miza krmilnik, in potem sem imel vse te - tako prej sem delal Nekaj ​​zelo različni. Torej, oprostite tiste stvari. Verjetno bom pospravil kasneje, preden Sem jo poslal v proizvodnjo. Ampak, če tečemo, bomo videli da so vse možnosti nam na voljo. Razen nisem naredil ozadja te barve. Torej, lepo preprosto uporabo. Zdaj pa poskušajo rešiti to programsko. OK. Torej, za to, da smo šele tekoč , da začnete nov projekt Xcode. Mi bo uspelo prazna vloga zdaj, zato, ker ne želimo, da imajo storyboard. Torej, jaz sem samo sebe omejuje, da ne uporabljate katero od snemalni knjigi, in prazna aplikacija ne bo daj mi storyboard. To je samo, da se prepreči Sam od goljufanja. Pa poglejmo. Čakati. Sem - ja. OK. Prav. Torej, tukaj, nam ostane nič drugega kot številka. Torej, mi premakniti to okno nekaj več. Prav. Kot lahko vidite tukaj, so le datoteke smo dal so AppDelegate.h in pika m, in nimamo snemalno knjigo več. Torej, če tečemo to, smo še vedno dogaja, da priti na belem zaslonu, hvala bogu. OK - bel zaslon, ampak nič drugega. In tukaj je pomemben del. To je, če dejanje zgodi. V prejšnjih različicah, tam je Običajno oznaka ni tukaj, ampak storyboard bistvu določa koda za ta del. Ne bom se spuščal v podrobnosti o tem, kako. In tisto, kar smo želeli storiti zdaj je, da smo želeli iti tukaj, in to malo prostora začne znova ustvarja našo aplikacijo. Torej - ja? PUBLIKA: Zoom? RHED SHI: Zoom. Ja, seveda. OK. Bom tipkanje, tako da to ne bi smelo glede na to preveč. OK. Torej, prvič, ne pozabite, smo želeli ustvariti krmilnik navigacija, kajne? In tako, kot lahko vidite tukaj, Xcode pa res veliko delo self-polnjenje. Torej, kot boste opazili, imena vse, kar je veliko dlje, kot je običajno, vendar Xcode ga izpolni za vas. Tako da sem lahko samo pritisnite tipko Enter. Torej, želim ustvariti navigacije UI Krmilnik kazalec, in sem lahko pokličete navigationController. Zdaj, kaj naj storim zdaj? Po tem enačajem, moram najprej ustvariti znotraj pomnilnika. Torej, bom naredil NavigationController alloc - Torej, to je podobno malloc, da vi, ki se uporabljajo v C - in potem grem, da ga init. Torej, to je res pomembno, da vsaka predmet, ki ste ga ustvarili, ki jih želite alloc in init. To se dogaja, da ga ustvarjajo in ga instantialize znotraj spomina, in Zdaj ga lahko uporabite. Vse v redu? Če ne boste storili, da se vaš predmet ne ne obstaja, in boste zašli v kup problemov. In potem, želim ustvariti krmilnik pogled, kajne? Torej, želim ustvariti UIViewController zvezda - Tako, vse je kazalec v Objective-C, in bom naredil nekaj podobnega, tu - alloc, pr. OK. In kaj bom naredil, potem je, da sem bo - tako, se spomniš, ko sva embed v navigacijski krmilnik? To je, kako to storiti v kodi. Boš naredil navigationController pushViewController - PUBLIKA: [neslišno]. Se bo to zgodilo za nas, ali -? RHED SHI: Oh, ja. Ne To mi je všeč bolje. Ne, bom to delo za vas, preveč. Torej vse te metode. Torej pushViewController je metoda, in tudi natančneje, to je primer metoda UI navigacijski krmilnik. Ker sem moral ustvariti svoj uporabniški vmesnik navigacijo Krmilnik zvezda, potem pa sem Lahko pokličete to pushViewController na moji poseben primer za navigacijo UI krmilnik. PUBLIKA: Ali moramo narediti natančen besedo, ali pa že obstaja za to? RHED SHI: Ja, ker je to metodo. To je podobno funkcijo. To je kot printf. To je kot scanf. To je kot strcompare. Razen, da ve, kaj boste morda želeli tip, in opazili, da bom vedno prišli do stvari, ki so zakonsko dovoljeni za vas. Torej, če nič ne kaže gor, potem je nekaj narobe. Torej, pushViewController. Torej, zdaj, želim potiskanje moje novo ustvarjena UIViewController, nato pa animirani - Morda ne. Ker je to bo Prvi pogled na krmilnik. Mislim, tudi če nisem, da animiran, to verjetno ne bo prikazal, saj to je prvi zaslon. In ne pozabite, nosilce. Torej, se spomnite, kako smo uporabili nosilce? In oklepaje Predmet poziva metodi - Tako naša cilj je navigacija krmilnik, in metoda je potisni Pogled krmilnik animirani. In videli, kako je potrebno v dveh argumentov, in oni so ločeni z, vrsta, Besede in debelega črevesa. Torej, Objective-C poskuša, da bi bilo lepo, in enostaven za branje na glas - kodo - in ga imeli pol, nekako, smisla. Vendar pa počne prav to ni dovolj. Dovolite mi, da pomanjšati zdaj. Samo delaš, da to ni dovolj, da bi dobili tisto, kar moramo prej. Torej, tukaj, boste opazili, da je dejansko ne bo kakršno koli bar, tukaj, kajne? Ni navigacijski bar, kar pomeni, da smo še vedno ga nisem dobila. In smo lahko preizkusili, da ven, tudi z, morda, spreminjanje ozadja ViewController, kajne? ViewController.background-- ah. Torej, kako ViewController ni imel barva ozadja, čeprav sem želel dostopati do njega? In to zato, ker ViewController je posoda za pogled. Torej, ima pogled premoženje, ki potem ima barvo ozadja. In ga lahko nastavite, nekako tediously, s pozivom barvo na UIColor predmeta. Torej, obvestilo tukaj, redColor je metoda. To je metoda razreda UIcolor. Ker nisem imel ustvariti dejanska primerek UIColor da poklicati metodo na njem. Jaz samo, preprosto, ga imenujemo na vrsti, kot so ime. Jaz, recimo, je pozval notr, če bi int, podobno metodo za to, npr. In tako, če tečemo to kodo, se bomo opazili, da je v ozadju dejansko ni red. To je še vedno bela. In kako lahko pridemo okoli, da je, opazujte, kako se je self.window. To je, kot je končni vsebnik za vašo prijavo. To je najboljša stvar, ki vsebuje vse, kar je na zaslonu za iPhone ali iPad aplikacij. In, prikladno, self.window ima to lastnost, imenovano rootViewController. In da se bo kazalec Zelo prvi pogled krmilnik znotraj vašega app. Torej, kaj želimo narediti tukaj, zdaj, je nastaviti, da enaka naši navigacijo krmilnik. Kajne? Ker je tehnično navigacija Regulator je naša zelo prvi pogled krmilnik. To spremlja niz drugem pogledu kontrolorji, in bomo to potisnilo Pogled na regulator v tej matriki v krmilniku navigacije. Torej, ne želite, da to storijo. To res ne bi ti pomagal. Želite to narediti, če si hotel narediti krmilnik navigacija, ki najbolj of boste verjetno zato, ker boste želeli da, nekako, neke vrste, kot meni, da se vrnete ali nekatere Domača stran, da se vrnete, namesto prazen zaslon. Ja? PUBLIKA: Je neprijetno za vas, da povečate - RHED SHI: Ja. Torej, ja. To je koda, in zdaj dajmo preizkusite ven. Torej, gremo. Magic. Torej, v redu. Hvala vam. OK. Torej sedaj, kar smo želeli storiti, je - tako, smo nekako omejiti, tukaj, kajne? Mi bi lahko napisali vse Notranjost tega eno funkcijo. Ampak, to ni, kako razvoj iOS ponavadi deluje. Torej, kaj bomo storili, je, da smo dogaja, da ustvarite nekaj novih datotek. Ampak, natančneje, bomo ustvarite nov razred Objective-C, ali Drug predmet - razred in predmeti so zamenljivi tukaj. In tukaj je, kako sem lahko potencialno ustvarite nov razred krmilnikov U. Torej, to je sub-class, kot boste opazili, tu, je podrazred Pogled UI krmilnik, ampak sem lahko pravijo tukaj katero koli drugo ime. Lahko pokličete to CS50, lahko kličem ta pogled krmilnik, lahko kličem to bla pogled krmilnik - karkoli hočem. To je samo ime za razred. Vendar pa se dogaja, da je pomembno saj v bistvu, kaj počnem Tukaj je, jaz ustvarjanje drugo ime razreda. Tako, da se dogaja, da se, tako kot nekateri sortiranje tipa ali predmeta. Torej, bi moralo biti malo generično. Da ne gre za zelo specifično. In tudi ne želim izpostaviti od teh dveh možnosti. Ker delamo vse, kar je v notranjosti Koda, včasih je veliko lažje da bi v datoteki vmesnik, tako da Lahko dobesedno povleci in spusti, kot je sva prej s snemalno knjigo - veste, nalepke ali gumb, ali karkoli drugega. In tako, xibs so datoteke, ki vam omogočajo, da ne da, in ga morate zapeti s tem stališčem regulatorja datoteko. Torej, bom namenoma ne poglej tole. Ponavadi bi to preveril, in če sem Samo to naredil za iPhone ali iPad, sem to bi preveriti in preprosto imeti enega za, saj veš, iPhone ali iPad. Ampak, ker delam univerzalna, bom ustvariti dva od tistih, ki kasneje. Torej, bom namenoma počistite to. To je tudi zelo pomembno. Veliko krat sem imel hroščev če to ni bilo potrjeno. In tako je očitno, da ta datoteka ni, nekako tako kot, vključene ali uvožene znotraj te preskusne mapo. In tako, moja koda je absolutno nima pojma o obstoju te datoteke, in ki povzroča veliko bolečine in ur razhroščevanje. Ampak, samo poskrbite, da je to tako preveri da veste, cilj tega Datoteka je za to vlogo. OK. Torej, zdaj smo ustvarili dva nova datotek. In te datoteke videti precej prazna. In, pravzaprav, kaj je še naprej ki jih ustvarja XIb datoteke. Torej, prej sem bil v Kakav Touch drop-down. Zdaj bom šel v uporabnika Vmesnik na dotik, in kot lahko vidite, sem lahko ustvarite storyboard. Torej, tudi jaz začel s prazno aplikacija, lahko še vedno uporabite storyboard. Kljub temu, da postane težavno z vidika kako želite priključiti da svojo kodo. Torej, ne bom šel tja. Ampak, kaj želimo narediti Zdaj je ustvariti pogled. In se lahko odločite za iPhone ali iPad. In ponavadi, ki označuje Razlika - če delaš univerzalna uporaba - si niti naredi podčrtaj iPhone, ali lahko narediš Twiddly. To sploh ni pomembno. To je enostavno za vas, da razlikovanje katerega mnenje je, za katere naprave. In tako zdaj poglej. Imam zaslon, da sem lahko delati. In tako, na primer, sem dal nalepko tu, veš, in sem tako lahko dajo en gumb tukaj. Ne bom se trudim spreminja Vrednosti tukaj. Ampak, kaj je pomembno, tukaj je da se datoteka lastnik - Tako, da sem v notranjosti iPhone pogled, iPhone XIb datoteke. In iz te navigacijskem območju ali spustnem meniju, želim iti v Lastnik datoteke je. In to je res Pomemben korak tukaj. Želim, da bi stališče razred krmilnik, tako da je ta XIb datoteka dogaja, da je povezana z moj pogled na krmilnik. In vse, kar sem naredil v notranjosti mojem mnenju Regulator je programsko dogaja, da se odraža tukaj. Tako pa opazili, da - pravzaprav, naredimo to stališče ozadje modra, npr. Ali zelena. In potem, tako da, če boste opazili, nazaj v ta oznaka, to je, če smo prišli do naše navigacijski krmilnik. Čeprav smo naredili ta korak, to je Še vedno bo rdeče, ne zeleno. In tu je razlog. To je zato, ker, ko smo inited naš pogled na krmilnik, tukaj - Oprosti, to je malo noro - ko smo inited našem mnenju krmilnik tukaj, jo inited splošnega tipa UIViewController. OK? Torej nismo še storiti je s tem razredu. Torej, ne pozabite, to je kot razred zdaj. To si lahko predstavljamo kot neke vrste, le kot je UIViewController tipa. In da bi uporabili to, kar moramo storiti, je to, uvoz - Uvoz ViewController - in, kot lahko vidite, da ga autofills zame. Torej, ViewController - in zdaj, tukaj, sem lahko spremenite UIViewController za ViewController. In zdaj, tukaj, sem lahko spremenite to ViewController. Poglejmo spet teči to. To je še vedno rdeča. In razlog, zakaj je Še vedno je rdeča, ker - woah, kaj se je zgodilo tam? Želeli smo, da te XIb datoteko s krmilnikom pogled. Vendar pa, da se dejansko ne da moramo iti v to. In ko naredimo init, želimo narediti initWithNibName, nato pa želimo storite na niz View_iPhone, npr. Lahko prezreti snop tukaj. In to bo omogočilo nas, pravzaprav - uh oh, tu je problem. Prav. In tako, tam je problem, ker v naš pogled XIb datoteke, imamo nalepko in imamo na gumb. Kljub temu, da smo povezani tista dva, ni nič v notranjosti ViewController.h ali ViewController.m ki odražajo gumbi ali te etikete. Torej, moramo napisati tiste v kot lastnosti regulatorja pogled. Torej, to je, kako se razglasi lastnine. To traja leta, običajno pa ti dve možnosti. Za nas in tega seminarja, Jaz bi rekel, da na splošno, večina lastnosti so nonatomic in obdržati. Si lahko preberete ki jih Google iskanje, veste, razlika med nonatomic in obdržati na, vas Veš, Google ali kaj podobnega. In jaz te bom odpeljal na, recimo, Stack Preliv, kjer se ljudje odgovori za razlike med tistimi. Ampak za zdaj, to je tisto, kar smo želite, da se ukvarjajo z. In želimo, da bi oznako UI, zvezda, in jo lahko imenujemo kar hočemo. To lahko imenujemo, saj veš, etiketi. In bomo ustvarili drugo ena za gumb. In ne pozabite vključiti zvezdico, zato, ker imamo opravka s kazalci skoraj povsod v notranjosti v Objective-C. Vendar pa to še vedno ne bo rešila problem, kot lahko vidite tukaj. In razlog je, ker, ko smo želite priključiti nalepko na XIb datoteke ali Gumb za program, ali glava in izvajanje datoteke, želimo dodali ta del kode - vtičnico. Opazimo, da je ključna beseda. In takoj, ko sem končal tipkanje da, bi morali imeti ti dva kroga, TUKAJ. Ponavadi si jih ne napolni prijavite Nisem prepričan, zakaj so. Ampak ponavadi, boste morali ročno jih povezati, da greste na tej strani področje gospodarskih javnih služb. In tako je prav zdaj, sem dobil nalepko izbran, in želim, da povlečete ta nova navajanje vtičnico lastniku moje datoteke, in nato kliknite na etiketi. Torej, zdaj, končno, ta oznaka priključen na to nalepko. In ta oznaka je tisto, kar bomo uporabite programsko spremeniti njegovo Besedilo, njegovo pisavo, njeno ozadje barva, et cetera. Torej, zakaj ne naredimo Enako za gumb? In kot boste opazili, za gumb, to je malo bolj zapletena. Zato, ker mislim, moral bi pritiskom na gumb, tako da je dobil veliko možnosti za to, kako uporabniki S pritiskom na gumb. In potem, bomo videli kasneje, da to lahko povežete z našimi koda, da bi bilo delo. Torej, za zdaj pa smo želeli povezati je za dejansko gumb znotraj našega kodeksa. Torej gremo na novo vtičnico referenciranja in naredite gumb. Zdaj pa spet teči to. Uh oh. OK. Ne vem, kaj se dogaja zdaj. Vau. Samo trenutek, tukaj. Pravzaprav, zakaj ne vzamemo poglej še en primer, v Obrestna časa. OK. Torej, tukaj je lažje pripravila Primer za ViewController. Kot lahko vidite tukaj, sem vključena lastnosti za Etiketa in gumb. In potem se ta del kode tu - to IBaction - je povezava tega gumba tukaj. Torej, kot lahko vidite tukaj, Touch Up Inside je priključen na izbirnik imenovano gumb pritisnjen. Torej, lahko dejansko šel skozi motion spet tu, ob Touch Up Znotraj in ga povlečete Datotečna Lastnik in nato kliknite na gumb pritisnjen. Zdaj pa vodijo našo kodo. Torej, zdaj, ta gumb, sedaj pa dela in nas bo popeljal na naslednjo stran. In v smislu našem mnenju upravljavca, To je del kode, ki je skrbi za pritisku. In to je pomembno omeniti, da je Sem ustvaril novo vrsto pogleda Regulator imenovano tabelo Pogled na krmilnik. Torej, to je bilo podobno nazaj v storyboard, ko sem vlekel eno od ti krmilniki pogled miza v snemalni knjigi. Jaz sem ustvarjanju drugo Kazalec na upravljavca pogledu tabele, alloc in ga pr-ing in potem delaš samo pika navigacijski krmilnik, potisnite ViewController, ta nova viewController. In sem nastaviti animacijo ja, ker zdaj znotraj mojega app, in I želijo, da bi dejansko videli animacije dogaja na domači strani v tabelo Pogled na krmilnik. PUBLIKA: Ali še vedno skrbi o zbiranje smeti? RHED SHI: Kaj je to? Ne Torej, je bilo vprašanje, ali imaš za delo z zbiranjem smeti? Torej, Xcode 4 imel podobno obloka, ki samodejna reference štetje. In tako je ponavadi, ko začnete novo projekt, bi morali preveriti, da zaradi nihče ne želi, da se ukvarjajo z sprostilo spomin in stvari. Ampak mislim, da v Xcode 5, ni niti ta možnost na novem projektu. Torej, se samodejno pa to za vas. Ja? PUBLIKA: Lahko izvozite PDF v snemalno knjigo? RHED SHI: Ja, zagotovo. Tako bo, vse to je treba vključiti v izvorno kodo, tako da vi moči odjaviti dejanski projekt Xcode za to. Ja? PUBLIKA: Ampak, mislil sem, če lahko jaz natisnete PDF z mojim snemalno knjigo? Če hočem izvoziti slik, ki kažejo na nekoga. RHED SHI: Oh ja. Mislim, mogoče, si lahko samo posnetek zaslona. Ja, in jim pošljite zaslon shot ali kaj podobnega. Ja. Torej, poglejmo. V interesu časa, mislim, to je vse, kar sem lahko zajema danes. Ampak vem, da je, pravzaprav, samo komaj dotika površine iOS razvoj. Torej, vas prosimo, da stik z mano, če imate kakršnakoli vprašanja o iOS razvoj. In upam, da bom lahko za čiščenje gor nekaj kode za vir koda datoteke, tako da boste imeli nekaj res lepo primeri delati. Razen, če gresta na CS50 Hackathon, sem lahko ali ne bo tam, in sem lahko pomagal z nekaterimi iOS razvoj, preveč. Torej, hvala, fantje.