TIANYU LIU: Hej, si e ajo shkon të gjithë? Dhe kjo është iOS App programimi i seminarit objektive c. Dhe emri im është Tianyu Liu. Unë jam një Lowell i vogël tani, përqëndruar në shkenca kompjuterike. Pra, në këtë seminar unë jam do të të mësojmë djema pak rreth asaj se si për të bërë një app. Yay, merakosem për të. Pra, para se të fillojë zhytje në anën e programimit aktuale, le të vetëm të vërtetë të shpejt të flasim për pse mund të doni për të ndërtuar një app IOS? Pse është iOS aq i tmerrshëm? Pra problemin e parë, së pari gjë që është shumë awesome për ne, veçanërisht si një CS50 student, është se iOS përdor Objektivi C. E pra, nuk ka një gjuhë të re të quajtur Swift, por ne nuk jemi duke shkuar për përdorim që në këtë seminar. Nëse jeni të interesuar në Swift, atje është një seminar i pavarur në lidhje me atë. Por Objektivi C është në thelb një superset e C. Kuptimi se çdo gjë që ju përdorni në C mund të përkthehet në Objektivi C shumë lehtë. Si ju mund të shihni më vonë, se me të vërtetë ka disa sintaksë shumë themelore, janë në thelb të njëjtë, C dhe Objektivi C. Pra, pasi ju keni marrë CS50 up kjo shumë, ju tashmë di Objektivi C, të paktën 40%. Gjithashtu, Apple ka një të vërtetë API i fuqishëm për iOS. Nuk janë një shumë e vërtetë të çmendur gjëra që ju mund të bëni me të. Një prej të cilave është dikush në të vërtetë krijoi një app IOS për makinat e kontrolluese, të cilat është shumë interesante. Ndoshta një helikopter është më emocionuese. Por, kjo është se si i fuqishëm API iOS mund të jetë. Dhe si ju mund të keni motive nga tani, del nga shtrati rafte është ndoshta një nga burimet më të rëndësishme linje në dispozicion për ju. Dhe lajm i mirë, për çdo Problemi i vetëm që ju mund ndoshta mendoj se e ndërsa ndërtimin tuaj projekt përfundimtar në Objektivi C, ka të ngjarë një përgjigje rafte del nga shtrati. Është vetëm awesome. Përveç kësaj, iOS është me të vërtetë një platformë ku ju mund të arrijnë një i madh Audienca me pak përpjekje. Ajo nuk është si Android, ku çdo gjë është shumë e fragmentuar. Çdo gjë iOS është e unifikuar. Dhe për aq kohë sa ju e krijoni një app për një iPhone, ju shumë lehtë mund port që në iPad, iPad mini, apo madhësive të ndryshme iPhone. Këto janë të gjithë me të vërtetë i përshtatshëm. Dhe kjo është vetëm me të vërtetë e mirë për impressing miqtë tuaj. Ju vetëm mund të mbajë një iPhone dhe tregoni mikut tuaj hej, kjo është app unë bëj. Ju mund ta bëni atë për ndonjë Apps desktop, e cila është e bukur. Në rregull, tani le të ketë në fakt në gjuhën Objektivi C. Pra, pse nuk e kemi filluar me disa sintaksë të vërtetë themelore. Siç e përmenda më parë Objektivi C Kjo është në thelb një superset e C. Pra, një shumë e sintaksës bazë janë në të vërtetë saktësisht e njëjtë. Duke deklaruar një ndryshore dhe duke shtuar dy variabla së bashku është pikërisht siç kemi bërë në Mario. Asgjë të re këtu. Në mënyrë të ngjashme, banonjës për lak dhe gjendja është gjithashtu njëjtë. Ju mund të bëni një për lak ashtu si ju, kanë bërë në një Mario [e padëgjueshme]. Dhe ju mund të bëni kushte ashtu si atë që ju kanë bërë në grupe tuaj të mëparshëm p. Megjithatë, Objektivi C nuk është plotësisht C, dhe nuk është diçka që është lloj i pazakontë për të. I pari është se kur ju jeni duke bërë programimit C, ju zakonisht e quajmë përfshijnë dhe pastaj një emër bibliotekë. Por në Objektivin C ju telefononi atë të importit. Në thelb duke thënë funksionalitetin, emra vetëm të ndryshme. Dhe vargjet janë në të vërtetë pak i çuditshëm. Ju mund të shihni se për herë të parë gjë që është lloj i çuditshëm është se ju keni një goxha weird-- sorry-- ju keni një NS mjaft të pazakontë nënshkruani mbi këtu. Dhe gjëja e dytë që është lloj i pazakontë po ju keni një shenjë në para në të vërtetë duke deklaruar string. Pra, në shenjë thelb nënkupton se një varg nuk është vetëm një varg, ajo është në fakt një objekt. Ne jemi duke shkuar për të shpjeguar që më vonë kështu që mos bëni panik në qoftë se ju nuk e bëni kuptuar se çfarë do të thotë. Dhe shtypje të konsol është pak i ndryshëm sepse në C ne e quajmë printf, por në Objektivin C ne e quajmë [e padëgjueshme]. Ju mund të pyesin se çfarë është ajo. Kjo është në thelb printf, vetëm një gjuhë të ndryshme. Saktësisht e njëjtë përdorimi, pikërisht të njëjtën funksionalitetit. E pra kjo rezulton se Objektivi C në të vërtetë ka një ns prefiksit në pothuajse çdo gjë, çdo themelor lloj të të dhënave, nsstring, nsarray, nsdictionary. Arsyeja është se ns në të vërtetë qëndron për hapin e ardhshëm, cila është një kompani që Steve Jobs e ka themeluar, e cila është një kompani ku Gjuha Objektivi C është i lindur. Pra, kjo është në thelb traditë. Unë e di se është pak çuditshëm, por është e Apple. Pra, diçka që është edhe weirder se kjo është një deklaratë funksion. Kjo është shumë e ndryshme nga ajo që ne shih në C, sepse këtu në të vërtetë atë nuk duket si C më. Çfarë ju keni here-- nga mënyrë kjo nuk është një pikë plumb, kjo është një shenjë minus. Ju keni një parantezë shenjë minus pavlefshme dhe pastaj emri funksion. Le të them vetëm nëse ne kanë Hello World, atëherë lloj kthimi do të jetë i pavlefshëm sepse ne kthehemi asgjë. Çfarë merr me të vërtetë i çuditshëm është se kur ju jeni që ka më shumë se një parametër duke kaluar në një funksion të njëjtë që do të jetë me të vërtetë i çuditshëm siç tregohet këtu. Ne kemi një emër metodë, i quajtur addInt të [e padëgjueshme] dhe ne jemi duke kaluar një parametër. Por pas kësaj, ne kemi më Emri metodë thirrje me. Dhe pas me që ne jemi duke kaluar parametër i dytë. Kjo është në fakt pak i çuditshëm, por të gjitha këto deklarata funksion ndjekin të njëjtin model si ky. Ne kemi një shenjë minus për të filluar me. Shenjën minus mund të jetë një shenjë plus nganjëherë në bazë të çfarë lloj metode është ajo. Metoda është në thelb një tjetër emër për funksionin. Dhe ne jemi duke shkuar për shpjeguar se më vonë kur ne jemi duke folur për objektin programimit të orientuar. Ju së pari të përcaktojë kthimin lloji brenda kllapa, pas së cilës vjen emri metodë. Ju jeni duke kaluar një parametër. Dhe në qoftë se ju keni më shumë parametra ju keni nevojë për të zgjeruar emrin metodë dhe në thelb të shkruaj diçka më shumë këtu. Kjo mund të jetë çdo gjë që ju dëshironi. Në rastin tonë kjo është me të. Por ju mund të thoni në fund, ose, ose, ose bar plot abc, çdo gjë që dëshironi. Dhe pastaj pasi që ju jeni duke kaluar parametër b. Kjo është një të vërtetë i çuditshëm Konventa por ne jemi shkuar për të parë pse Apple dëshironte për të bërë këtë shumë shpejt. Pra, si ju quajnë funksion? Duke e quajtur një funksion në Objektiva C është gjithashtu e ndryshme nga C. Në të vërtetë, duke e quajtur një funksion në Objektivi C është më shumë si ju jeni duke folur me dikë. Këtu ne kemi vetë, që është quajtur një objekt. Ju në thelb po më thoni kundërshtojë veten për të thënë "Hello World!" Kjo është se si për të thirrur funksionin. Një objekt dhe një emër metodë kombinuar me njëri tjetrin. Dhe ky është vendi ku i pazakontë extension për emrin metodë me të vërtetë vjen në lojë. Le të shikojmë në shembullin e dytë. Ne vetëm të përcaktuar një metodë të quajtur addInt me blah blah blah. Pra në këtë rast, kur ju jeni duke bërë thirrje se [specifik? Mesazhi?] se kjo do të duken si addInt vetë: 10 me: 2. Kjo tingëllon si anglisht. Edhe pse funksioni Deklarata funksion është i pazakontë, pika e Objektivi C-së model deklaratë metodë, është se kur ju jeni duke thirrur funksion apo metodë ajo do të tingëllojë si e vërtetë anglisht. Pra, është shumë intuitiv sapo ju të merrni në të. Sidomos në këtë rast, ku ju mund thelb shoh se emri funksion është lloj i dokumentimin veten. Ju nuk keni nevojë për ndonjë më shumë shpjegim për të parë çfarë saktësisht po ndodh, çfarë saktësisht një parametër duke bërë. Duke shkuar përtej kësaj, le të flasim pak bit për të orientuar objekt programimin. Programimi i orientuar objekt është një nga programimit themelore teknika apo modelet që është përdorur nga Objektivin C. Objektivi C është quajtur C Objektivi, nuk C, për një arsye të vërtetë të mirë. Pra, para se të marrim në Sintaksa Objektivi C, Le të vërtetë shpejt shikoni në çfarë saktësisht është një objekt. Ne e kemi bërë ndoshta diçka të si objekt para, e cila quhet struct kur ju jeni zbatimin e një pemë apo një listë e lidhur ose [? provoni. ?] Pra, është e në thelb si një struct, por kjo është shumë më e fuqishme se kaq. Një objekt ka metodat dhe pronat. Metodat janë në thelb funksionon. Në thelb funksionon se një specifik në një objekt të caktuar. Dhe prona janë në thelb fushë ju të specifikojë në struct. Pra, për çdo objekt të vetëm ne kemi disa prona se ka disa variablave që janë specifike për objektin. Dhe ne kemi disa funksione të cilat janë gjithashtu specifike për objektin. Dhe funksionet janë quajtur metoda dhe variablat janë quajtur pronat. Është vetëm një emër i zbukuruar. Ndërsa ju të vërtetë, çdo pamje të vetme ju shoh ndërsa ju hapni një app IOS, le të them vetëm Twitter ose Facebook, çdo pikëpamje e vetme që ju shikoni është një objekt. Dhe edhe tërë app është një objekt për të filluar me. Koncept shumë interesante. Dhe pse ne duam objekt programimin e orientuar? Kështu që ju mund të imagjinojmë se kur ju program ajo merr goxha e komplikuar. Le të them vetëm kur ju jeni zbatimin fushë shahu, logjika do të të jetë i komplikuar me të vërtetë. Ju keni 36 të ndryshme copë, kështu që nëse ju dua të shkruaj logjikë për të gjithë 36 copa të ndryshme në shah, që do të jetë një shumë e Funksionet e ndryshme dhe variablave. Kjo është një shumë e telashe. Dhe ndoshta ju jeni do të shkruaj një metodë tjetër ose funksion tjetër për secilën nga pjese te saktësisht të kontrollojë atë që bëjnë ata. Por në qoftë se ju bëni të orientuar objekt programimi, të gjitha këto pjesë mund të abstraktohet në një objekt të vetëm. Dhe objekti do të ketë disa të përbashkët Pronat, si çfarë lloj copë është ajo? Çfarë ngjyrë është ajo? Si mund kjo të shkojë? Dhe në këtë mënyrë ju keni në masë të madhe thjeshtuar logjikën e saj. Pra, kjo është vetëm një mënyrë të vërtetë të mirë për të bërë programe të komplikuara, dhe marrëdhënie hierarkike në kuadër të programit, shumë e thjeshtë. Ndërsa ne jemi duke shkuar për të parë pse shumë shpejt kur ne jemi në të vërtetë duke bërë programming-- kur ne jemi në të vërtetë duke bërë një kod S programimit seancë më vonë. Well përveç kësaj, Programimi objekt orientuar është vetëm një shumë e fun. Ju mori për të hartuar vetë objektin tuaj. Ju mori për të hartuar atë që bën kjo duket si me veten. Nuk ka përgjigje të drejtë për të. Dhe kjo është krejtësisht interesante. Pra, në të orientuar objekt programimin, dy koncepte themelore do të jenë të klasës dhe shembull. Një klasë është në thelb një template për objektin. Dhe një shembull është në thelb një objekt specifik. Le të thonë se ju jeni duke e bërë një cookie. Në këtë rast, çdo të vetme cookie ju në të vërtetë të përfundojë me do të jetë një objekt. Por pjatë cookie ju përdorni për të piqem të gjithë cookie-t do të jetë një klasë. Një klasë është në thelb një template. Dhe shembull do të jetë një specifik objekt krijuar nga asaj klase. Dhe një shembull do të krijohet në bazë të deklarimit të klasës, siç do të shohim në slides mëvonshme. Pra, le të bëjë në fakt një të vërtetë Shembulli i shpejtë [e padëgjueshme]. Le të thonë se ne jemi duke deklaruar një objekt për një mace. Objekti duhet have-- klasë cat duhet kanë disa prona dhe metodat. Çfarë lloj i pronave duhet të klasë have-- duhet të ketë cat? Për shembull, ngjyra, mosha dhe race, ata do të jetë i variablave që janë specifike për çdo mace. Dhe ata janë disa gjëra që ne përdorim për të përshkruar një mace. Çfarë lloj metode, ose çfarë mund të bëj një mace? Disa shembuj të shpejtë do të jetë në ndjekje mouse, hani peshk ose vetëm mjaullin. Kjo është një të vërtetë i shpejtë Shembulli i klasës cat. Dhe një të vërtetë të veçantë objekt mace do të jetë një mace ku ne të specifikojë ngjyra, mosha dhe race. Në këtë rast, objekti ynë është nuk ka më një klasë më. Ne kopje template nga klasa dhe ne të specifikojë çdo informacion specifik në atë objekt të veçantë për ta bërë të pavarur. Dhe kur ju jeni duke bërë thirrje një metodë brenda një objekti, ju vetëm thirrje Meow mbi objektin, cila është macja e keni krijuar vetëm. Ndoshta ju do të shtypura nga diçka si "Përshëndetje Botë! Meow ". Pretty bukur. Në rregull, le të vetëm merrni në disa detaje dhe të shohim se çfarë saktësisht bën që përkthehet në ekzistencë programimit iOS. Pra, në iOS programimin e çdo të vetme klasë do të zbatohet në dy fotografi. Një skedë është këtu, që quhet interface. Një tjetër skedë është këtu, që quhet zbatimin. Në mënyrë tipike ndërfaqe do të ketë extension.h siç e kemi parë në biblioteka C. Dhe skedë zbatimi është do të ketë extension.n. Kjo është lloj i pazakontë. Por .n do të thotë në të vërtetë .C, nuk ka asnjë Dallimi themelor në mes të atyre dy. Pra në këtë rast, ne mund të shohim se ne jemi duke deklaruar ndërfaqe, Cat: objekt. Që quhet trashëgimi. Ne jemi në thelb trashëguar klasë mace nga klasa e objektit. Kështu që çdo pronë dhe metodë që ishte përcaktuar më parë në klasën e objektit do të përcaktohet automatikisht në një klasë mace si. Përveç kësaj, ne define ngjyra, race, dhe mosha, tre variabla. Që në të vërtetë duket si diçka që keni bërë më parë. Ajo duket si struct. Kjo është në thelb sintaksë për deklarimin struct, dhe që është tërësisht e saktë. Dhe që e përmenda më parë, Dallimi një struct dhe një objekt, një nga Dallimet themelore është se një objekt ka metodë, ndërsa një struct ka vetëm variablave. Pra, përveç pronave ose Ndryshoret ne kemi krijuar për objektin, ne të specifikojë ndonjë metodë. Le të thonë se vetëm këtu ne kemi dy metoda, një është meow, një tjetër është miu ndjekje. Ne ndoshta duan të jenë duke kaluar një parametër i bazuar në metodën tonë të mëparshëm model deklaratë. Ju ndoshta dëshironi që të jetë duke kaluar një mouse. Dhe ju ndoshta do të doni për t'u kthyer një të ditur bool në qoftë se cat juaj ka sukses kapur miun apo jo. Kjo është interface, por ne mund të shoh se ndërfaqe të vërtetë nuk bëjë asgjë. Ajo vetëm tregon një program çfarë exists-- çfarë ekziston në klasë cat. Pra, në mënyrë për program për të bërë diçka, ne duhet të kemi fotografi të zbatimit. Pra këtu, gjëja e parë që ne bëjmë është natyrisht ne import interface. Pasi ne import interface, ne define metodën. Le të thonë se vetëm këtu meow vetëm do të shtypura nga "Hello World!" në tastierë. Dhe pas zbatimit file, ne jemi shumë e shumë të bërë. Kjo është në thelb një klasë Deklarata për një klasë. Pra, tani pyetja bëhet, si mund të deklarojë një ndryshore? Mënyrë që ju përdorni një klasë për të krijuar një objekt në Objektivin C është shkruar këtu. Ju së pari të përcaktojë se kjo është një akrep mace, sepse çdo objekt në Objektivi C në fund është zbatuar si një tregues. Dhe ju e quani të klasës, i thirrët ata si alloc, e cila është në thelb e malloc, duke u thënë të sistemit operativ që ju nevojë për një hapësirë ​​e kujtesës për këtë objekt. Pasi që ju të keni një objekt tashmë dhe ju vetëm të nisja atë. Kjo është vetëm konventë. Unë e di se është është pak i çuditshëm, por kjo është në të vërtetë se si Apple bën gjëra. Caktimi pronat është në të vërtetë mjaft i thjeshtë. Kjo është shumë e ngjashme me çfarë jeni duke bërë, kur ju jeni caktimin e disa specifik fushë brenda struct. Ju thjesht duhet variablin emrin, emrin e pronës, dhe të caktojë një vlerë të veçantë për të. Dhe duke e quajtur një metodë është shumë e ngjashme. Duke e quajtur një metodë është në thelb ajo që unë flas për për thirrjen çdo metodë në Objektivin C. Ju jeni duke kaluar një objekt, në ky rast ajo do të jetë e myCat, dhe ju jeni duke kaluar emrin metodë. Ndërsa në qoftë se ju jeni duke folur për objektin, myCat, që ju duhet të mjaullin. Është mjaft interesante. Pas kësaj, nuk është një model më thelbësore të projektimit se ne duhet të flasim për para se të bëhet në kodin aktual S. Kjo model dizajn është quajtur ngjarje nxitur programimin. Kjo është gjithashtu ndoshta një nga më të Idetë themelore në programimin IOS. Pra, ju ndoshta nuk e dini se çfarë saktësisht është programimi ngjarje të shtyrë, por kjo nuk është e vërtetë se frikshme. E pra në fakt, ju keni bërë tashmë që më parë. Kjo është një nga linjat që ju keni ndoshta tashmë i shkruar në fundit [e padëgjueshme] i CS50, google.maps.event.addListener (shënues, "Click", funksion () {}) :. Duke e quajtur këtë linjë ju jeni në thelb duke u thënë kompjuterin se sa herë që ngjarje të quajtur "Click" ndodh në shënues, përdorni këtë funksion. Kjo është shumë e ndryshme nga ajo që ju bëni në mario.c. Në mario.c ju vetëm të drejtuar programin dikur, kjo ju jep një prodhim, dhe ju jeni bërë. Këto janë lloj si një Programet e shtënë. Programet ngjarje të shtyrë janë shumë, shumë të ndryshme. Le të imagjinojmë, nëse Facebook është një e program shtënë se nuk është me të vërtetë mirë. Ju thjesht shkoni në Facebook një herë dhe kjo është bërë. Kjo ju jep një output dhe ju kurrë nuk e mori atë përsëri. Ju kurrë nuk mori ndonjë gjë më shumë. Pra këtu, veçanërisht model që ne përdorim është ngjarje shtyrë, kështu që çdo funksion do të të kapen bazuar në atë Ngjarja ka ndodhur. Për shembull, në qoftë se ne kemi një buton dhe ne të specifikojë se sa herë që klikohet butoni, telefononi funksionin e quajtur "Hello World!" Në këtë mënyrë ne mund të vërtetë menaxhuar logjikën funksion rrjedhin në një mënyrë shumë fleksibël. Ky përdorues mund të bëjë ose telefononi një funksion që tashmë është quajtur. Është e bazuar tërësisht në atë që përdoruesit të bëni. Pra, ne mund të shohim se kjo është në të vërtetë shumë më mirë se mario.c. Dhe lajm i mirë është se është e në të vërtetë nuk është një koncept i ri. Ju djema keni bërë tashmë se në problemin e fundit të vendosur. Pra, në Objektivin C ka tre diagrame të ndryshme për ngjarje nxitur programimin. Diagrami i parë është i quajtur veprim objektiv, ku ju lidhin një buton shtyp me disa funksion. Le të them vetëm, sa herë që ju të klikoni disa buton, ju telefononi disa funksion. Ky është veprim shumë i thjeshtë objektiv. E dyta është në të vërtetë një më e vështirë, është quajtur delegacion në protokoll. Ne jemi duke shkuar për të shpjeguar që në hollësi të madhe më vonë. Dhe mënyra e tretë është njoftimi. Kjo në të vërtetë nuk është shumë e rëndësishme sa larg si ne jemi të shqetësuar, sepse shans se ju jeni do të përdorin njoftimin në projektin tuaj përfundimtar është shumë e ulët. Pra, ne jemi duke shkuar për të kaloni atë pjesë. Dhe ne jemi duke shkuar për të zhyten në delegacionin në protokoll. Pra, çfarë saktësisht është një protokoll? Apo çfarë është saktësisht një delegacion? Le të flasim për protokollin për të filluar me. Protokollet janë asgjë, por ngjarjet. Por këto ngjarje janë dhënë për ju nga Apple për të filluar me. Për shembull, unë nuk jam plotësisht i sigurt se si shumë prej jush djema përdorni origjinal Apple app mail ose kontakt, por çdo herë që shkoni tryezë dhe shtypni qeliza specifike në tabelën, që është një ngjarje. Dhe në qoftë se ju doni të bëni që ngjarje me veten, kjo është në fakt një pak më të vështirë. Pra, Apple ka dhënë se edhe për ju kështu që ju mund të përdorni vetëm drejtpërdrejt ngjarje për të bërë diçka në tuaj. Protokollet janë në të vërtetë vërtetë, të vërtetë e përdorur gjerësisht në Objektivin C. pra në fakt, çdo app të vetme ka diçka kapur app delegat. Brenda e delikat është e gjitha e protokollet për ngarkimin app. Le të them vetëm se ka një ngjarje për app e bëri ngarkesën. Pra, çfarë duhet të ndodhë pasi ju keni krijuar një app, pasi të keni hapur app, pasi ju mbyllni aplikacionin, ose pas ju vënë iPhone për të fjetur. Këto janë të gjitha ngjarjet që i ka tashmë është dhënë për ju. Dhe fillimisht brenda këtyre grimcave nuk do të ketë zbatim. Apple tha ju vetëm se këtë funksion do të ndodhë kur disa ngjarje të ndodhë, por ajo që ju bëni me atë funksion është plotësisht deri në ju. Delegimi është në thelb thënë të klasës që ju duhet të merren me këto protokolle. Është pak konfuze, por ajo do të jetë e shumë më e qartë kur kemi të bëjmë kodet s në veprim. Delegacioni në protokoll është në fakt një mekanizëm shumë të fuqishëm në kuptimin se në qoftë se ne bëjmë delegacion në një klasë të veçantë, ne në thelb mund të trajtojë të gjitha llojet e ngjarjeve duke përdorur çdo klasë që kemi, mjet shumë i përshtatshëm. Kështu një shembull të shpejtë për Delegacioni në protokoll do të jetë ajo që unë vetëm biseduar rreth. Ky protokoll në mënyrë specifike është quajtur tableview [e padëgjueshme] përzgjedh rol në [? Indeksi?] [? e kaluara. ?] Pra kjo një ngjarje që do të kapet kur ju në të vërtetë trokitje e lehtë në një specifik qelizë në tableview tuaj, le të thonë se vetëm në postën tuaj ose në kontaktet app tuaj. Brenda një funksion ka pasur fillimisht duke bërë asgjë. Funksioni nuk ka të bëjë asgjë by default. Por ju mund të specifikoni çfarë funksioni ka, dhënë atë që ju doni nga app tuaj. Mjet shumë i përshtatshëm. Dhe me të gjithë atë u tha, unë në thelb mbulojnë disa sintaksë shumë themelore dhe Koncepti themelor për Objektivin C programimi, dhe ne mund të bëjmë disa kodin s. Shumë më tepër emocionuese. Pra code s është në fakt një pak pak e madhe kur ju të hapur atë për herë të parë. Një shënim të shpejtë, kështu që nëse ju dua të bëj zhvillimin IOS, Unë rekomandoj që ju keni një Mac. Sepse duke bërë zhvillimin IOS në Windows është me të vërtetë, të vërtetë e vështirë. Kjo është që mund të bëhet, por është e vërtetë e vështirë. Dhe ju patjetër të bëni nuk duan të përdorin g edit. Pra, në kodin s ne kemi disa fusha të ndryshme. Kur ju së pari të hapur s code ju do të shihni një zonë navigacion, e cila në thelb tregon ju të gjithë fotografi që është në projektin tuaj të tanishme. Ju keni një zonë të toolbarit, e cila është në thelb menaxhimin pikëpamjet, ose disa pak i shpejtë Mjetet rreth s kodin e vetë. Dhe kjo është zona aktuale redaktor. Kjo zonë është shumë e ngjashme g edit, por shumë më mirë se g edit. Dhe në këtë fushë e duhur, është e i quajtur zonë utility. Zonë bëhet me të vërtetë i dobishëm kur ju jeni duke krijuar ndërfaqe ose duke specifikuar disa struktura të shpejtë për app tuaj. Dhe zona e fundit është debugging. Kjo zonë përmban konsol. Pra, sa herë që ju them printf, ose nslog në rastin tonë, të gjitha rezultatet tuaja janë do të jenë të shtypura këtu. Të gjithë të drejtë? Unë mendoj ne mund të vërtetë të shpejt të bëjë një shembull për programimin IOS. Dhe le të vërtetë të hapur deri s kod. Kështu që çdo herë që të hapë deri s kod, është e duke shkuar për të treguar deri diçka të tillë. Kjo do të ju pyes çfarë ju doni të bëni? A doni të filloni diçka të rastit, një shesh lojërash, në thelb ju vetëm mund të testuar kodin pa në fakt të kryer për çdo app. A doni për të krijuar një projekt të ri? Apo nuk ju duan të vazhdojnë duke punuar në projektin ekzistues? Në rastin tonë, ne jemi duke shkuar për të krijuar një projekt të ri. Pra, kjo është vërtetë e bukur, s Kodi fakt ka tashmë ju dhënë disa templates për krijimin e objekteve. Nëse ju doni të bëni një lojë, s kodin në të vërtetë ka një template lojë për ju, ka faqe të bazuar aplikacione, tab aplikim i bazuar. Në këtë rast, ne jemi duke shkuar për të bërë diçka shumë të thjeshtë, dhe ne jemi duke shkuar për të përdorur një Aplikimi i vetëm pamje. Pas kësaj vetëm atë që ju doni të telefononi produktin tuaj, dhe si e ke emrin, çfarë është identifikues tuaj, dhe çfarë gjuhe ju përdorni. Këtu ne nuk duam të kontrolloni duke përdorur të dhënave Core. Data Core është në thelb një databasing iOS. Nëse ju bëni Data Core, s Kodi do të përcaktojë një shumë klasa më e komplikuar për ju. Pra, për të mbajtur gjithçka të thjeshtë, ne jemi vetëm do të bëjë pa të Dhënave Core e drejtë tani. Problemi ne do të jenë të duke përdorur është that-- problemit ne jemi duke shkuar për të krijuar është se ne në thelb duan të importit Mario nga C në një app IOS. Pra, le të thërrasë se Mario-IOS. Sigurisht ju të specifikojë se çfarë ju duan të vënë në projektin tuaj. Dhe atje ne do të shkojmë. Pra, kjo është pak e madhe, por kjo është në të vërtetë ajo që ne vetëm e pa në slides. Dhe zona e parë që ne shohim tani është në thelb konfigurimit projekt. Pra, çdo gjë që ju doni të bëni projekt, çfarë lloj i pajisjes, le të them vetëm se çfarë lloj të pajisjes nuk ju duan app tuaj për të dalë në? A është iPhone, iPad apo universal? Kështu orientimin e pajisjes, të gjitha stuff këtë. Jo shumë e rëndësishme, por mund të jetë, por kjo është një vend ku ju të ngritur projekti juaj në qoftë se ju në të vërtetë duan për të vendosur në dyqan Apple. Në rregull, le të shohim në diçka që është brenda kodit tonë. Le të shkojnë nëpër file navigator. Dhe këto janë të gjitha dosjet që tashmë erdhi me template, shumë e bukur. Pra, kur ne të klikoni një prej tyre kjo është ajo që duket si. Shumë i ngjashëm me g edit. Por ju mund të shihni se theksim i sintaksës është ndoshta pak nicer. Dhe kjo është në fakt shumë më shumë fuqishme se g redaktimi. Dhe ju mund të plotë auto shumë gjëra për ju, siç do të shohim shumë shpejt. Le të hapë zonën debug si. Në rregull, si ne mund të shohim, tastierë është e drejtë këtu. Kjo është ajo që ju jeni duke shkuar për të parë se ku ju jeni në printf ose nsloging diçka. Pra, pa zhurmë më tej, le të vërtetë përpilojnë app dhe shikoni se çfarë ndodh. Një tipar thelbësor për Kodi s, është se kodi s vjen me një imitues iPhone. Pra, ju nuk keni nevojë që të ketë një iPhone për të provoni projektin tuaj, Kodi s mund të simulojnë se për ju, si ne mund të shohim tani. Është shumë e bukur. Ajo është duke marrë pak bit e kohës për të përpiluar dhe në thelb ne kemi një aplikim bosh, e cila në fakt nuk bën asgjë. Por ajo harton. Është shumë e awesome. Është shumë më mirë se C, Huh? Në rregull, atëherë le të të përpiqet për të shtuar diçka. Një fotografi që është pak i pazakontë këtu quhet storyboard. Kjo është në të vërtetë një i madh, tipar awesome për kodin s. Sepse në kodin s, ju mund të vërtetë zvarrit dhe elemente të bjerë mbi ndërfaqen dhe ajo do të tregojë drejtpërdrejt lart. Le të provoni këtë. Ne bjerë një emërtim këtu, "Hello World !!!" Ne mund të qendrës se. Pretty cool. Tani le të drejtuar këtë ndalesë simulim. Këtu kemi "Hello World !!!" Ne as nuk e bëni ndonjë kodim ende. Çfarë dreq po ndodh? Kjo është se si i fuqishëm Interface Builder mund të jetë. Dikush ka thënë madje se ndoshta ju mund vetëm të përfunduar një app pa shkrim ndoshta një mijë rreshta të kodit vetëm duke përdorur Interface Builder. Por kjo ndoshta nuk është e mënyra më e mirë për të bërë atë. Tani le të vërtetë të marrë poshtë për kodim. Pra strukturës për file është në të vërtetë me të vërtetë interesante sepse, si ju mund të shihni, atje ka funksion kryesor kudo. Shih? Siç e kemi përmendur më parë, ju mund të shihni se kjo është një skedar zbatim për një klasë të caktuar. Por nuk ka kudo kryesor. Pra, ku është kryesor? Në të vërtetë, nuk është një kryesor, por kryesor në të vërtetë është e fshehur nga ju. Kryesor është këtu. Kjo duket e njohur. Pra, në thelb ajo që iOS është duke bërë brenda kryesor është se sa herë kryesor është quajtur, e cila është në thelb sa herë app është ekzekutuar, atë krijon një objekt të quajtur AppDelegate. Siç e përmenda më parë, e gjithë app është në fakt një objekt në vetvete. Pra, në këtë mënyrë, në thelb iOS app është e thënë të përpiluesit se OK, unë jam duke shkuar për të krijuar një produkt i quajtur AppDelegate, dhe që do të jetë app im. Kështu që ju duhet të shkoni nëpër atë AppDelegate dhe të shohim se çfarë e bën atë djalë. Puna ime është bërë për mua. Dhe në AppDelegate ju mund të shihni se ka disa funksione të vërtetë të pazakontë, mirë në të vërtetë metodat, që Apple ju ka dhënë tashmë. Cilat janë këto? Këto janë në fakt vetëm protokolle që unë isha duke folur rreth. Pra, këto janë ngjarje që Apple ju ka dhënë për të filluar me. Nuk ka asgjë në disa nga funksionet e drejtë tani, por në qoftë se ne duam të inicializoj diçka për app tonë para se të bëhet në ekspozoheshin çdo pikëpamje, ne bëjmë që këtu. Ju mund të lexoni vetëm emrin dhe unë mendoj Ngjarja është në të vërtetë me të vërtetë i qartë. Pra tani kryesor ka krijuar një objekt për AppDelegate. Dhe çfarë AppDelegate do të bëjë është në të vërtetë i fshehur edhe nga ju. AppDelegate do të fillojë ngarkimit të aksioneve ViewController. Pra, kjo është në thelb do të fillojë ngarkimit deri të gjitha pikëpamjet që ju keni dhe vetëm bëjnë pamjen në bazë të hierarkisë. Pra në këtë rast ne kemi vetëm një pikëpamje, e cila është këtu. Kështu që është e vetmja pamje që do të quhet. Logjika ViewController është e drejtë këtu. Ky është kodi që në të vërtetë kontrollon pamje ne sapo e pa. Në rregull, le të bëjmë diçka këtu. Pra viewDidLoad tingëllon si një ngjarje, kur në fakt ky është edhe një delegat, kjo është gjithashtu një protokoll. Pra, çfarëdo mendimi është i ngarkuar, çdo gjë brenda funksionit do të quhet. Në këtë rast ne duhet të shohim "Hello Tianyu! "Në qoftë se ne të drejtuar programin. Është duke u pak i ngadalshëm hartimin fotografi storyboard. E pra me të vërtetë, ne e shohim një prodhim për të. Kjo është pretty cool. Tani le të bëjë në fakt Mario. Unë jam duke shkuar për të përcaktuar funksionojë shumë shpejt. marioWithLevels: rezultatet (int) të nivelit. Në rregull, kjo është në të vërtetë i tmerrshëm tipar i përfundimit auto kodin s. Pra, kur ju shkruani për të dhe shkruani hyjë, ajo i ka dhënë tashmë template për ju, e cila është pretty cool. Që duhet të duken të vërtetë të të njohura për ju djema. Na vjen keq, kjo është faji im. Në rregull, cool. Kjo logjikë duhet të duket me të vërtetë të njohur për ju djema, veçanërisht vetëm Mario. Por ne tani do të shtypura jashtë për konsol çdo herë të vetme, sepse ne duam të mbajmë disi udhë të asaj që ne jemi shtypjen. Ne jemi duke shkuar për të përdorur rezulton disi më vonë, për të shfaqur të shtypura jashtë rezultojnë të përdoruesit. Pra, në vend të kësaj ne jemi vetëm nslogging çdo gjë, të cilat ne jemi ruajtjen gjithçka në rezultat thirrje funksion, por logjika është saktësisht e njëjtë. Pasi kemi përfunduar atë, ne vetëm printoni rezultatet tona. Dhe këtu në vend të shtypjes nga tim emri, ne jemi duke shkuar për të thirrur një funksion. Le të shohim se çfarë ndodh. Oops, natyrisht. Ne nuk kemi një të mirë pak piramidale jashtë këtu. Kjo është në thelb C, ne jemi vetëm manipulimin ku ju telefononi një funksion dhe si e bën një funksion të duken si. Nuk ka asgjë tjetër. Por kjo është në të vërtetë jo shumë emocionuese këtu, sepse ne nuk jemi duke parë çdo gjë nga app iPhone. Pra, nëse ju në të vërtetë keni një iPhone app-- në qoftë se ju në të vërtetë keni të drejtë Mario IOS tani, ju nuk do të jeni për të parë çdo gjë që ka asgjë të bëjë me Mario sepse të gjitha ato rezultate në një tastierë janë të fshehura nga një përdorues. Kjo është ajo që ju shihni, cila është "Hello World !!!" Jo e mirë. Tani le të përpiqemi për të bërë përdorues të parë çfarë saktësisht ne jemi shtypjen nga. Pra, ne nuk kemi nevojë për emërtim më. Le të përpiqen dhe të kuptoj se diçka tjetër që mund të jetë i dobishëm. Nuk është në fakt një element që është quajtur fushë teksti, të cilat mund të të jetë shumë e dobishme për ne. Ajo në thelb tregon një rajon i tekstit që mund të redaktohen. Kështu që duket me të vërtetë të dobishme. Tani le të zvarrit atë dhe të heqë atë. Wow, ne kemi një pamje tekst sipas mendimit tonë, të vërtetë dashuroj. Kjo është pak më shumë të mëdha. Le të bëjë atë më të vogla. Vënë atë në qendër. Bëni atë më të vogla si. Tani ne kemi një pamje të tekstit, të cilat ne mund të të përdoret për të shfaqur rezultatin final. Por tani është e definitivisht nuk do të punojë sepse nuk ka no-- ViewController ne vetëm përcaktuar nuk e di se ka një pamje tekst atje. Pra, ne duhet të disi Lidhje pikëpamjen e tekstit ne vetëm e krijuar me klasën që ka ardhur tashmë me ne. Mënyrë ne bëjmë që është në të vërtetë me të vërtetë magjike. Pra, të hapur deri storyboard. Nuk është një [e padëgjueshme] special i quajtur [? asistent?] [padëgjueshme]. Kur ju klikoni atë, është e do të hapë dy fotografi. Njëra është një klasë dhe një tjetër është një pikëpamje përkatëse për të. Është shumë, shumë e dobishme. Dhe le të shkon vetëm përmes file .h. Kontrolli, kjo është [e padëgjueshme] logjikë. Kontrolli Shtypni dhe terhiq pamje tekst në deklaratë. Ne jemi duke shkuar për të thirrur atë outputView. Lidhu. Pra, këtu ne kemi deklaruar një i ri pronë për klasën tonë ViewController. Dhe pronë i ri është vetëm pikëpamje teksti ne kemi krijuar në ndërtesën interface. Pra, në këtë mënyrë ne mund të qasje të gjithë të dhënave dhe të manipuluar çdo gjë që është brenda pamje prodhimit, e cila është awesome. Pra, në kodin tonë aktuale, le të bëjë diçka me të. Pra, këtë herë, kur ne jemi si shtypje jashtë rezultatin përfundimtar për Mario, ne jemi në nuk prerjet asgjë. Unë do të thotë që ne mund të mbajë Deklarata logging. Përveç kësaj, ne dërgoni readout ne vetëm krijuar për pikëpamjen e prodhimit, e cila është një UI textview ne sapo krijuar. Tani le të shohim se çfarë ndodh. Wow. Ne kemi një piramidë në app tani. Kështu që përdoruesit mund të shihni prodhimit tonë sepse ne kemi kopjuar prodhimit nga kodit tonë në ndërfaqe tonë. Kjo është shumë e mirë. Ajo në fakt nuk është se emocionuese sepse ne can-- Të gjitha app është duke bërë është duke treguar një piramidë për ju, dhe nuk ka asgjë që mund të bëni në lidhje me të. Kjo nuk është veçanërisht emocionuese. Pra, tani le të bëjnë një buton që do të qartë pikëpamjet. Duket se një buton do të jetë e dobishme. Drag and drop. Një buton. Button dy. Pra, kur ne të klikoni majtë button, pikëpamje duhet të qartë. Duhet të ketë asgjë në ekran. Dhe kur ne të klikoni button drejtë, Mario, pamje do të shfaqet sërish. Pra, në këtë mënyrë ne gjithashtu bëjmë sende magjike, kontrollin dhe terhiq në deklaratën e klasës në asistent director-- në asistent shikuesit. Në këtë rast kemi të specifikuar se kjo duhet të jetë një veprim. clearMario. Pra, këtu ne kemi krijuar tashmë një veprim i quajtur clearMario, cila është metodë që do të quajtur sa herë që ne të shtypni butonin qartë. Pra, në fakt në kodin tonë, le të vetëm vënë tekstin e prodhimit dhe pamjen e prodhimit në asgjë, dhe në këtë mënyrë kjo do të duket të jetë i qartë. Përveç kësaj, le të krijojnë një tjetër metodë të quajtur runMario. Oh sorry, se nuk duhet të jetë një pronë. Në rregull, që duhet të jetë një veprim si. Dhe kur kjo funksion është quajtur, ne vetëm të drejtuar Mario dhjetë. Shpresojmë se do të jetë mirë. A do të përpiloj? Po. Tani ne kemi një pamje. Ne kemi një prodhim. Dhe le të vetëm të shohim se çfarë ndodh. Kjo e shkuar. Është kthyer përsëri. Pra, këtu ne kemi specifikuar çfarë lloj të funksionit do të quhet kur ne shkruani në diçka, kur ne të shtypni një buton të veçantë. Kjo është në thelb Skema veprim objektiv për ngjarje të shtyrë Programimi në Objektivi C. Përveç kësaj, kjo nuk është shumë emocionuese sepse ne nuk mund të vërtetë të ndryshojë sa e lartë piramidale do të jetë, kështu që ne ndoshta dëshironi të disi merrni një input nga përdoruesi dhe të ndryshojë lartësinë e piramidë bazuar në atë që ata e prodhimit. Pra, ne jemi duke shkuar për të bërë këtë. Pra, këtë herë, kur ne e quajmë runMario, ne nuk do të vetëm thirrje Mario drejtpërdrejt. Titulli i këtij dikujt. Delegat. Kjo është shumë interesante. Çfarë është një delegat? Unë jam duke shkuar për të vënë veten këtu. Dhe ne jemi duke shkuar për të parë çka do të thotë më vonë. Pra, këtu ne kemi krijuar në thelb një shembull specifik i quajtur një alarm UI pamje. Një pamje UI vigjilent është në thelb ajo që ju do të shih çdo kohë diçka pops up dhe ju pyet për të dhëna, si çfarë do të ndodhë kur ju jeni duke u përpjekur për të blerë diçka në një dyqan app. Përveç kësaj, pas jush e krijoni atë, ne vetëm tregojnë alarm. Në rregull, le të vetëm të shpejt Testi do të qe puna apo jo. Kjo është shumë i ftohtë. Tani le të vërtetë të krijojë një fushë input për gatishmëri UI. Kjo është se si ne e bëjmë këtë. Dhe ne duhet të kemi një pamje të dhëna për gatishmëri. Very cool. Le të thonë se vetëm 10. Kjo nuk është e drejtë duke bërë ndonjë gjë tani sepse thirrja në të vërtetë nuk ka ndryshuar për ekzekutimin mario. Pra, kjo është bërë pak pak i çuditshëm sepse sa herë ne shtypni një buton poshtë, kur ne shtypni një buton në pikëpamje vëmëndshëm, diçka duhet të ndodhë, por kjo nuk do të ndodhë. Si nuk kemi kapur atë? Si e bëjmë ne e dimë se një përdorues ka hedhur poshtë një pamje alarm dhe tashmë ka hyrë një numër, sepse tani asgjë nuk është në të vërtetë ndodh. E pra, ju mund të keni mendoi kjo e drejtë, delegacioni. Pra, përveç të gjithë këto deklarata, ne kemi nevojë për të shtuar një delegacion të ri në ajo quhet UI view vigjilent delegat. Kështu që çdo të vetme bashkëveprim apo ngjarje se ne do të kemi me pamje UI vëmëndshëm do të trajtohen me klasën tonë si. Pra, përveç kësaj, do të jetë vigjilent pamje Kliko Butonin në indeks. Kjo është arritur. Pra, në rast se ne kemi already-- kështu që ne kemi kuptova një protokoll që do të merret me ngjarjen kur ne kliko butonin Done në pikëpamjen vëmëndshëm. Pra, çdo herë që ne të shkarkojë pamje vigjilent, kjo duhet të ndodhë. Më lejoni vetëm të provuar atë shumë shpejt. E pra me të vërtetë, ne kemi arritur këtu. Pra këtu, ajo që ne nuk do të të ketë në fakt është në të vërtetë merrni the-- Pra, ne duam që të dal teksti që ne kemi parë hyri në pamje vëmëndshëm. Dhe në bazë të tekstit, ne jemi duke shkuar për të shfaqur Mario. Kjo shumë shpejt rezulton nëse në fakt ajo punon apo jo. Pra në këtë rast, në qoftë se ne të dhëna, le të themi, 10, ne duhet të shohim 10. Shumë mirë, ne kemi një numër të këtu. Kjo është shumë e mirë. Tani hapi i fundit do be-- Pra Hapi i fundit që duhet të bëjmë tani është vetëm një quajnë Mario me Niveli i bazuar në të dhëna që ne kemi vënë në pamje vëmëndshëm. Pra, ne kemi nevojë për të kthyer ky varg në iOS. Del nga shtrati Static është shumë e awesome. Dhe atëherë ne vetëm thirrje vetë Vlera marioWithLevels. Le të shohim se do të në të vërtetë punojnë apo jo. Ne jemi duke dhënë tashmë një piramidë. Le të përpiqen për të ndryshuar lartësinë. Që në të vërtetë punon. Kjo është pretty cool. Kështu që tani ju mund vetëm input çdo vlerë që ju dëshironi. Le të thonë se vetëm katër. Kjo është shumë e awesome. Pra, kjo është në thelb një shembull i vërtetë i shpejtë për mënyrën se si për të krijuar një projekt në kod s dhe se si të vërtetë të shpejt wire up disa ngjarje të vërtetë të thjeshtë dhe funksionet. Pra, burimi është duke shkuar që do të vënë në internet më vonë. Pra, nëse ju jeni të interesuar në mënyrën se si funksionon iOS Mario, Unë jam duke shkuar për të vënë pikërisht njëjtë Projektet onto faqen e internetit CS50 të mëvonshëm. Ne jemi bërë në thelb me verë, dhe para se të përfundojë Unë vetëm dua të theksoj ju djema për të disa burime vërtetë të tmerrshëm se janë në dispozicion online. Natyrisht dokumentacioni Apple do të jetë shumë e dobishme. Por përveç kësaj, unë veçanërisht rekomandojmë katër burime, shkollore kod, shtëpi pemë, AppCoda dhe WWDC videos. Shkollë Code dhe shtëpi pemë janë Dy faqet e internetit online edukimin, që në mënyrë specifike të përqëndrohet në inxhinieri software. Sidomos për shkollë të kodit, ata kanë tutorial të vërtetë të mirë në iOS. Kjo është një shembull i vërtetë i shpejtë për të. Ata në të vërtetë të krijuar një të vërtetë të cute-- shikoni në atë iPhone të vogël të bukur tip atje, kjo është shumë e awesome. Dhe mënyra ata shpjegojnë Objektivi C Sintaksa është krejtësisht i qartë. Shtëpi pemë është e njëjtë. Dhe AppCoda është një forum. Është në fakt një blog që ishte e drejtuar me një përvojë të vërtetë Objektivi C programues. Dhe të gjitha ato mësime në AppCoda janë goxha të shkurtër dhe të lehtë për të zbatuar, shumë e rekomanduar. Dhe në qoftë se ju jeni një zhvillues, patjetër të shkoni shikoni sa videot WWDC ku ju mund të mësojnë në lidhje me programimin e fundit IOS teknika, TV dhe bibliotekat. Kështu që është shumë e shumë ajo për seminarin. Thank you so much. Dhe unë shpresoj se ju të argëtohen krijimin e vet app tuaj IOS.