TIANYU LIU: Hei, kuidas on läheb kõigile? Ja see on iOS App kavandamise eesmärk c seminar. Ja minu nimi on Tianyu Liu. Ma olen Lowell junior kohe, keskendudes infotehnoloogia. Nii et selles seminar ma olen lähen õpetama teid poisid natuke kuidas teha app. Jee, erutu ta. Nii et enne kui me isegi alustada sukeldumine tegelikud programmeerimine poolel olgem lihtsalt väga kiiresti rääkida miks võiks soovid ehitada iOS app? Miks on iOS nii vinge? Nii esimene probleem, esimene asi, mis on päris vinge meile eriti CS50 tudeng, on see, et iOS kasutab Eesmärk C. Noh, seal on Uue keeles nimetatakse Swift, kuid me ei kavatse kasutada, et see seminar. Kui olete huvitatud Swift, seal on sõltumatu seminar sellest. Aga Eesmärk C on põhimõtteliselt superset C. tähendus et kõik, mida kasutavad C saa tõlgitakse Eesmärk C väga lihtsalt. Nagu võite näha hiljem, et tõepoolest seal on mõned väga põhilised süntaks, on põhimõtteliselt täpselt sama, C ja eesmärk C. Nii sest te olete võtnud CS50 up nii kaugele, siis juba tean Eesmärk C, vähemalt 40%. Ka Apple on tõesti jõuline API iOS. Seal on palju tõesti hull asju saab teha. Üks, mis on keegi tegelikult loodud iOS app kontrolli autod, mis on päris huvitav. Tõenäoliselt helikopter on põnev. Aga see, kuidas võimas iOS API saab. Ja nagu te võib-olla arvasin kohe, stack overflow on ilmselt üks Kõige olulisem online-vahendeid teile kättesaadavaks. Ja hea uudis, et iga ühe probleemi saab võimaluse mõtle ehitamise ajal oma Lõplik projekt Eesmärk C, on tõenäoliselt stack overflow vastus. See on lihtsalt fantastiline. Lisaks sellele, iOS on tõesti platvorm kui jõuad suur publiku vähese vaevaga. See ei ole nagu Android, kus kõik on päris killustatud. Kõik iOS on ühtne. Ja nii kaua, kui loote app iPhone, Te saate väga lihtsalt port, et iPadi iPad mini või erinevate iPhone suurused. Need kõik on tõesti mugav. Ja see on lihtsalt väga hea viisiks oma sõpradega. Sa võid omada iPhone ja öelge oma sõbrale hei, see on app teen. Seda saab teha mis tahes desktop apps, mis on kena. Olgu, nüüd lähme tegelikult saada keelde Eesmärk C. Miks ei alustame mõned väga põhilised süntaks. Nagu mainisin enne Eesmärk C See on põhimõtteliselt superset C. Nii palju põhiliste süntaksi on tegelikult täpselt sama. Kuulutatakse muutuv ja lisades kahe muutuja kokku on täpselt nii, nagu me oleme seda teinud Mario. Midagi uut siin. Samuti üürniku jaoks silmus ja tingimus on ka sama. Seda saab teha silmus nagu sa on teinud Mario [kuuldamatu]. Ja seda saab teha tingimused sama, mida sa on teinud oma eelmise p komplekti. Kuid Eesmärk C ei ole täielikult C, ja seal on midagi, mida on selline imelik midagi. Esimene on see, et kui sa oled teed C programmeerimine, siis tavaliselt nimetame hulka ja seejärel teegi nime. Aga Eesmärk C helistate, et import. Põhimõtteliselt öeldes funktsionaalsust, lihtsalt erinevad nimed. Ja stringid on tegelikult natuke imelik. Näete, et esimene asi, mis on imelikuks on see, et teil on päris weird-- sorry-- teil on päris imelik NS kirjutada siia. Ja teine ​​asi et imelikuks on teil on märk enne tegelikult kuulutatakse string. Nii on märk põhimõtteliselt tähendab et string on mitte ainult string, see on tegelikult objekti. Me läheme selgitada et hiljem nii, et ärge paanika, kui te ei aru, mida see tähendab. Ja trükkimine konsool on natuke erinev, sest C kutsume printf, kuid Eesmärk C kutsume [kuuldamatu]. Teilt võidakse küsida mis see on. See on põhimõtteliselt printf, lihtsalt erinevat keelt. Täpselt sama kasutus, täpselt sama funktsionaalsust. Noh selgub, et Eesmärk C tegelikult on ns eesliide peaaegu kõik, kõik põhiandmed tüüp, nsstring, nsarray, nsdictionary. Põhjus on selles, et ns tegelikult tähendab Next Step, mis on firma, mis Steve Jobs on põhjendatud, mis on firma, kus keel Eesmärk C sünnib. Nii et see on põhimõtteliselt traditsioon. Ma tean, et see on natuke imelik, aga see on Apple. Nii et kui miski on isegi weirder kui on funktsiooni deklaratsiooni. See on väga erinev sellest, mida me vt C, sest siin on tegelikult ei tundu C enam. Mida sa pead siin-- poolt kuidas see ei ole taane, see on miinusmärgiga. Sul on miinusmärk sulgudes void ja siis funktsiooni nimi. Ütleme nii, et kui me on hello world, siis Tagastatava väärtuse tüüp oleks kehtetu sest me tagasi midagi. Mis saab tõesti imelik on see, et kui sa oled millel on rohkem kui üks parameeter pääsemist sama funktsiooni, mis on tõesti imelik nagu siin näidatud. Meil on viis nime, nimetatakse addInt et [kuuldamatu] ja me vastu ühe parameetri. Aga pärast, et meil rohkem meetod nimi kõnest. Ja pärast koos me möödaminnes Teine parameeter. See on tegelikult natuke imelik, kuid kõik need funktsiooni deklaratsioonid järgida sama mustriga nagu see. Meil on miinusmärk alustada. Miinusmärk võiks olla plussmärgiga mõnikord põhineb millist meetodit see on. Meetod on põhimõtteliselt teine ​​nimetus funktsiooni. Ja me ei kavatse selgitada, et hiljem, kui me räägime objekti programmeerimine. Esmalt kindlaks tagasituleku kirjuta sees sulgudes pärast, mis pakub meetod nimi. Sa vastu ühe parameetri. Ja kui sul on rohkem parameetrid peate laiendada meetodi nimi ja põhimõtteliselt kirjutan midagi siin. See võib olla ükskõik mida tahad. Meie puhul on see koos. Aga võib öelda, lõppu või või või abc täis baari, mida iganes sa tahad. Ja siis pärast, et sa oled kulgeb parameeter b. See on väga imelik Konventsioon kuid me oleme näeme, miks Apple ei tahtnud mida teha, et väga kiiresti. Niisiis, kuidas sa helistada funktsioon? Funktsioonide eesmärgi C erineb ka C. Tegelikult, kutsudes funktsiooni eesmärgi C on rohkem nagu sa oled rääkinud keegi. Siin me oleme ise, mis nimetatakse objekti. Sa põhimõtteliselt ütlen vastuväiteid ise öelda "Tere maailm!" See, kuidas helistada funktsioon. Objekti ja meetodi nimi üksteisega kombineerida. Ja see on koht, kus imelik pikendamine meetodis nimi tõesti hakkavad. Vaatame teine ​​näide. Me lihtsalt määratletud meetodit nimetatakse addInt koos blah blah blah. Nii et kui kui helistate selle konkreetse [? sõnum?] see läheb nägema ise addInt: 10: 2. See kõlab inglise keeles. Kuigi funktsiooni funktsiooni deklaratsioon imelik, koht Eesmärk C on meetod deklaratsiooni muster, on see, et kui helistate funktsiooni või meetodit see tunduda tegelik inglise keeles. Nii et see on väga intuitiivne kui sa sinna sisse. Eriti sel juhul, kus saab põhimõtteliselt näha, et funktsiooni nimi on omamoodi dokumenteerimine ise. Sa ei vaja rohkem selgitusi, et näha Mida see siis tähendab, mida täpselt üks parameeter teeb. Minnes kaugemale, et räägime veidi natuke objektorienteeritud programmeerimine. Objektorienteeritud programmeerimine on üks põhilisi programmeerimine tehnikaid ja mustreid, mis on kasutatud eesmärgi C. Eesmärk C nimetatakse Eesmärk C, ei C, tõesti hea põhjus. Nii et enne kui me sattuda Eesmärk C süntaksit Olgem tõesti kiiresti vaadata Mis täpselt on objekti. Me oleme ilmselt teinud midagi nagu objekti enne, mis nimetatakse struct, kui olete rakendamise puu või seotud nimekirja või [? proovida. ?] Nii, see on põhimõtteliselt nagu struct, aga see on palju võimsam kui see. Objektil on meetodeid ja omadusi. Meetodid on põhimõtteliselt funktsioone. Põhimõtteliselt toimib see spetsiifilised teatud objekti. Ja omadused on põhimõtteliselt valdkonnas määrate struct. Nii iga objekti meil on mõned kinnisvara et mõned muutujad, mis on omased objekti. Ja meil on mõned funktsioonid, mis Samuti on spetsiifiline objekt. Ja funktsioone nimetatakse meetodeid ja muutujate nimetatakse omadused. See on lihtsalt väljamõeldud nimega. Kuigi sa tegelikult iga vaade näete, kui avate iOS app, Ütleme Twitter või Facebook, iga vaade näed on objekti. Ja isegi kogu app on objekti alustada. Väga huvitav kontseptsioon. Ja miks me tahame objekti programmeerimine? Nii võite ette kujutada, et kui sa Programm see läheb päris keeruline. Ütleme nii, et kui sa oled rakendamise malelaual loogika läheb tuleb tõesti keeruline. Sul on 36 erinevat tükki, nii et kui te tahan kirjutada loogika kõikide 36 erinevat tükki malet, et see saab olema palju erinevaid funktsioone ja muutujaid. See on palju vaeva. Ja ilmselt sa lähed kirjutada erineva meetodi või erinevad funktsioonid Iga tükk täpselt kontrollida, mida nad teevad. Aga kui sa objektorienteeritud programmeerimine, kõik need tükid saab ammutatud sisse ühe objekti. Ja objekt on mõned ühised omadused, nagu millist tükk see on? Mis värvi see on? Kuidas on võimalik liikuda? Ja sel moel on oluliselt lihtsustatud loogikat see. Nii et see on lihtsalt väga hea võimalus keerukamate programmide, ja hierarhiline seos programmi raames, väga lihtne. Nagu me näeme miks väga kiiresti, kui me tegelikult teeme programming-- kui me tegelikult teeme S-koodi programmeerimine istungil hiljem. Noh lisaks sellele, objektorienteeritud programmeerimine on lihtsalt lõbus. Sul on kujundada oma objekti. Sul on kujundada mida teeb see näeb välja ise. Ei ole õige vastuse. Ja see on täiesti huvitav. Nii objektorienteeritud programmeerimine, kahe põhimõistete on klassi ja näiteks. Klassi on põhimõtteliselt malli objekti. Ja näiteks on põhimõtteliselt ühe konkreetse objekti. Ütleme nii, et sa üritad küpsist. Sel juhul iga cookie sa tegelikult lõpuks läheb objekti. Aga cookie plaat sa kasutad küpsetada kõik küpsised olema klassis. Klass on põhiliselt malli. Ja näiteks on üks konkreetne objekti loonud läbi selle klassi. Ja näiteks luuakse põhineb klassi deklaratsiooni, nagu me näeme hiljem slaidid. Nii saab tegelikult teha tõesti kiirnäide [kuuldamatu]. Oletame, et me kuulutab objekti kass. Objekt peaks have-- cat klassi peaks on mõned omadused ja meetodid. Millist omadused peaksid klassi have-- peaks kass on? Näiteks värvi, vanus ja tõug, nende on muutujad, mis on iga kass. Ja need on mõned asjad mida me kasutame, et kirjeldada kass. Millist meetodit, või mida võib kass teha? Mõned näited, oleks chase hiir, süüa kala või lihtsalt mjäu. See on tõesti kiire Näiteks kass klassi. Ja tõesti konkreetse cat objekti saab kass kus me täpsustada värvi, vanuse ja tõu. Sel juhul meie eesmärk on enam klassi enam. Me kopeerida malli klassi ja me täpsustada iga konkreetse info Selle konkreetse objekti et ta on sõltumatu. Ja kui te helistate Meetod sees objekti, sa lihtsalt helistada mjäu objektil, mis on kass äsjaloodud. Ilmselt siis välja printida midagi "Hello World! Meow. " Päris armas. Olgu, lähme lihtsalt satuvad mõned üksikasjad ja vaata, mida täpselt teeb, tõlkida on iOS programmeerimine. Nii iOS programmeerimine iga klassi viiakse ellu kaks faili. Üks fail on siin, mis nimetatakse liides. Teine fail on siin, mis nimetatakse rakendamist. Tüüpiliselt liides on extension.h nagu me oleme näinud C raamatukogudes. Ja rakendamine faili läheb on extension.n. See on selline imelik. Aga .n tähendab tegelikult .c puudub Põhiline erinevus nende kaks. Nii et kui me näeme, et me oleme kuulutatakse liides, Kasside: objekti. Seda nimetatakse pärandist. Me põhimõtteliselt pärib cat klassist objekti klassi. Nii et iga vara ja meetod, mis oli eelnevalt määratletud objekti klassi automaatselt määratletud in kass klassi samuti. Lisaks sellele, me määratleme värvi, tõu ja vanuse, kolm tunnust. See tegelikult välja näeb midagi, mida varem teinud. Tundub struct. See on põhimõtteliselt süntaks jaoks struct deklaratsiooni, ja see on täiesti õige. Ja kuna ma varem mainitud, Erinevus struct ja objekti, üks põhimõttelised erinevused et objektil on meetod, samas struct ainult muutujaid. Niisiis lisaks omadused või muutujad oleme loonud objekti, me täpsustada mõningaid meetod. Ütleme nii, et meil on siin kaks meetodit, üks Mjäu, teine ​​on tagaajamine hiirt. Me ilmselt tahavad olla taandumas parameeter, mis põhineb meie eelmine meetod deklaratsiooni muster. Sa ilmselt tahad olla ettenägematud hiir. Ja sa ilmselt tahad tagasi bool märgilist Kui teie kass on edukalt püütud hiir või mitte. See on liides, kuid me saame näha, et liides tegelikult ei tee midagi. See lihtsalt näitab programmi, mida exists-- see on juba olemas kass klassi. Niisiis selleks Programmi midagi teha, vajame rakendamise faile. Nii et siin, esimene asi, mida me teeme on ilmselt Toome liides. Pärast Toome liides, me defineerime meetodit. Ütleme nii, et siin mjäu oleks lihtsalt välja printida "Hello World!" konsooli. Ja pärast rakendamist faili, me päris palju teinud. See on põhimõtteliselt klassi deklaratsiooni ühe liigi. Nüüd küsimus on, kuidas sa kuulutada muutuja? Kuidas te kasutate klassi luua objekti Eesmärk C on kirjutatud siin. Esmalt täpsustada, et see on kass pointer, sest iga objekti Eesmärk C lõpuks ellu pointer. Ja sa nimetad klassi nimetame neid kui alloc, mis on põhimõtteliselt malloc, ütlen opsüsteemi vajan mälu Selle objekti. Pärast seda on objekti juba ja sa lihtsalt vormindamiseks. See on lihtsalt konventsioon. Ma tean, et see on natuke imelik, kuid see on tegelikult, kuidas Apple teeb asju. Omistamine omadused on tegelikult päris lihtne. See on väga sarnane mida sa teed, kui sa määrates teatud valdkonnas sees struct. Sa pead lihtsalt muutuja Nime, vara nimetus, ja määrata konkreetne väärtus seda. Ja kutsudes meetod on väga sarnased. Kutsudes meetod on põhimõtteliselt mida ma räägin kokkukutsumise tahes meetodi eesmärgi C. Sa kulgeb objekti sisse Sel juhul saab olema myCat, ja sa möödaminnes meetodi nimi. Nagu kui sa räägid objekti, myCat, et sa peaksid mjäu. See on päris huvitav. Pärast seda, seal on üks olulisem disain muster et me peame rääkima enne saada tegelikku S-kood. See disain muster nimetatakse sündmustepõhine programmeerimine. See on ilmselt ka üks põhilisi ideid iOS programmeerimine. Nii et sa ilmselt ei tea, mida täpselt on ajendatud sündmustest programmeerimine, kuid see ei ole tegelikult nii hirmutav. Noh tegelikult olete juba teinud enne. See on üks rida oled ilmselt juba kirjutatud viimase [kuuldamatu] on CS50, google.maps.event.addListener (marker, "Click", funktsiooni () {}) :. Helistades seda joont olete sisuliselt ütleb arvuti et kui üritus nimega "Nuppu" juhtub marker, kasutada seda funktsiooni. See on väga erinev mida te teete mario.c. In mario.c sa lihtsalt käivitada programmi kord, see annab sulle väljund, ja sa oled teinud. Need on omamoodi nagu üks lask programme. Sündmus juhitud programmides on väga erinevad. Oletame, kui Facebook on üks shot programmi see ei ole tõesti hea. Sa lihtsalt minna Facebook üks kord ja see on tehtud. See annab teile mõned väljund ja sa ei saanud seda tagasi. Sa ei saanud midagi enamat. Nii et siin, eriti muster, mida me kasutame on Kui sõita, nii et Iga funktsioon püütakse selle põhjal, mida Kui on juhtunud. Näiteks, kui meil on nuppu ja me täpsustada et kui selle nupu vajutamist on helistada funktsioon nimega "Hello World!" Sel moel saame tegelikult hallata funktsiooniga loogika voolavad väga paindlikult. Kasutaja saab teha või helistage funktsiooni mis on juba kutsutud. See on täiesti põhjal, mida kasutajad teevad. Nii näeme, et see on tegelikult palju parem kui mario.c. Ja hea uudis on see, et see on tegelikult ei ole uus mõiste. Kutid on seda juba teinud et viimase probleemi seatud. Nii Eesmärk C on kolm erinevat diagrammid sündmuse sõidetakse programmeerimine. Esimene skeem on nimetatakse kavandab meetmeid, kus sa seovad nuppu vajutage mõne funktsiooni. Ütleme lihtsalt, kui klõpsate mõned nuppu, siis helista mõnda funktsiooni. See on väga lihtne sihtmärk meetmeid. Teine on tegelikult kõige raskem, seda nimetatakse delegatsiooni protokolli. Me läheme selgitada et väga üksikasjalikult hiljem. Ja kolmas võimalus on teatavakstegemisest. See ei ole tegelikult väga oluline nii kaugele kui me mures, sest võimalus et sa lähed kasutada teatavakstegemisest Teie lõplik projekt on üsna madal. Nii et me läheme vahele selle osa. Ja me läheme sukelduma arvesse delegatsiooni protokolli. Mis täpselt on protokoll? Või mida täpselt on delegatsioon? Räägime protokolli alustada. Protokollid on vaid sündmusi. Aga need sündmused on andnud Teile Apple alustada. Näiteks, ma ei ole täiesti kindel, kui palju sa poisid kasutavad Apple originaal app mail või kontakt kuid iga kord kui satute laua ja vajutage konkreetse raku lauale, mis on sündmus. Ja kui sa tahad teha Sellisel juhul ise, see on tegelikult natuke raske. Nii Apple on andnud, et isegi teile nii et võid lihtsalt otse kasutada Kui midagi teha ise. Protokolle tegelikult tõesti, tõesti laialdaselt Eesmärk C. Noh Tegelikult iga app on midagi püütud app delegaat. Toas õrn on kõik protokollid laadimise app. Ütleme nii, et on olemas sündmus app ei koorma. Mis juhtub siis, kui olete loodud app, pärast avate app, pärast sulgete rakenduse või pärast paned iPhone magama. Need on kõik sündmused, mis on juba antud teile. Ja algselt sees need osakesed ei tule mingit rakendamist. Apple lihtsalt ütlesin, et see funktsioon juhtub, kui mõne sündmuse juhtub, aga mida sa teed, et funktsioon on täiesti sinust. Delegatsioon on põhimõtteliselt räägib klassi et sa peaksid hakkama neid protokolle. See on natuke segane, kuid see saab olema palju selgem, kui me teeme s koodid tegevuses. Delegatsiooni protokoll on tegelikult väga tugev mehhanism, mis tähendab, et kui me delegatsioon konkreetse klassi, saame sisuliselt hakkama igasuguseid üritusi kasutades ükskõik millist liiki meil, väga mugav tööriist. Nii et üks kiire eeskujuks delegatsiooni protokoll on see, mida ma just rääkisin. See protokoll konkreetselt nimetatakse Tableview [kuuldamatu] valimiseks rolli kell [? indeks?] [? Viimase. ?] Nii et see Juhul, kui oleks püütud kui tegelikult puuduta konkreetset cell oma Tableview, ütleme lihtsalt oma mail või oma kontaktid app. Toas funktsioon oli algselt mitte midagi. Funktsioon ei midagi vaikimisi. Aga sa võid täpsustada mis funktsioon teeb, arvestades seda, mida sa tahad välja oma app. Väga mugav tööriist. Ja kõik, mis Nagu öeldud, ma põhimõtteliselt katta mõned väga põhiliste süntaksi ja põhimõiste eesmärgi C programmeerimine, ja me saame teha mõned s-kood. Palju põnevam. Nii s kood on tegelikult natuke suur kui avate seda esimest korda. Üks kiire märkus, et kui sa tahan teha iOS areng, Ma väga soovitada teil on Mac. Kuna teeme iOS areng Windows on tõesti väga raske. See on teostatav, kuid see on tõesti raske. Ja sa kindlasti teha ei soovi kasutada g muuta. Nii s koodi meil mitme eri piirkondades. Kui te esimest korda avada s koodi näed sõidupiirkond, mis sisuliselt näitab kõiki faile, mis on oma praeguse projekti. Sul on tööriistariba ala, mis on põhimõtteliselt juhtimise seisukohti, või mõni väike kiire tööriistad umbes s koodi ise. Ja see on tegelik toimetaja piirkonnas. See ala on väga sarnane g muuta, kuid palju parem kui g muuta. Ja see õigus ala, on nimetatakse kasuliku ala. Piirkond muutub tõesti mugav, kui loote liides või täpsustades mõned kiired seadistuse oma app. Ja viimane ala on silumist. See sisaldab konsooli. Nii et kui sa ütled printf, või nslog meie puhul kõik oma tulemused läheb trükitakse siin. Kõik on korras? Ma arvan, et me võime tõesti kiiresti teha Näiteks iOS programmeerimine. Ja olgem tegelikult avada s koodi. Nii et iga kord, kui avada s koodi, see on läheb, et näidata üles midagi sellist. See küsin Mida sa teha tahad? Kas soovite alustada midagi juhuslik, mänguväljak, põhimõtteliselt sa lihtsalt testida koodi ilma tegelikult toime mis tahes app. Kas soovite luua uus projekt? Või tahad jätkata kallal olemasolevat projekti? Meie puhul me ei kavatse luua uus projekt. Nii et see on tõesti kena, S kood on tegelikult juba poetanud malle loomiseks objektid. Kui sa tahad teha mängu, s-koodi tegelikult on mäng template teie eest, on lehel põhinevaid rakendusi, tab põhine rakendus. Sel juhul me läheme midagi väga lihtne, ja me ei kavatse kasutada ühevaade taotluse. Pärast seda just see, mida soovite helistada oma toodet, ja mis su nimi on, mis su tunnus ja mis keelt te kasutate. Siin me ei taha vaadake kasutades Core Data. Core andmed on põhimõtteliselt andmebaasistamine iOS. Kui sa põhiandmed, s koodi saab määratleda palju keerulisem klasside teile. Nii, et hoida kõike lihtne, me oleme lihtsalt kavatse seda teha ilma Core andmed just nüüd. Probleem me ei kavatse olla kasutades on selle-- probleem me ei kavatse olla loomiseks on, et me põhimõtteliselt soovite importida Mario C et iOS app. Nii saab helistada, et Mario-iOS. Muidugi saab määrata, mida sa tahan panna oma projekti. Ja seal me läheme. Seega on see natuke valdav, kuid see on tegelikult mida me lihtsalt nägin slaidid. Ja esimene ala näeme praegu on põhimõtteliselt projekti konfiguratsiooni. Nii et kõik, mida tahame teha Projekti millist seadet, Ütleme, millist seadet kas sa tahad oma app ilmuma? Kas see on iPhone, iPad või universaalne? Nii seadme sättumuse, kõik see kraam. Mitte eriti oluline, kuid võib olla, kuid see on koht, kus sa luua oma projekti kui te tegelikult soovite kasutada, et Apple poest. Olgu, vaatame midagi, mis on sees meie koodi. Lähme läbi file navigaator. Ja need on kõik failid, mis on juba kaasas malli, väga kena. Nii et kui me klõpsake ühte neist see on kuidas see välja näeb. Väga sarnane g muuta. Aga näed, et süntaksi esiletõstmine on ilmselt natuke kenamaks. Ja see on tegelikult palju rohkem võimsam kui g toimetamine. Ja saate auto täielik palju asju teile, nagu me näeme väga kiiresti. Avame silumine piirkonnas samuti. Olgu, näeme, konsool on siin. See on see, mida sa lähed, et näha, kus sa oled printf või nsloging midagi. Nii ilma pikema jututa, olgem tegelikult koostada app ja vaata, mis juhtub. Üks oluline tunnus s-koodi, on see, et s-koodi Kaasas iPhone simulaator. Nii et sa ei pea olema iPhone proovida oma projekti, s koodi saab simuleerida, et teid, nagu näeme praegu. See on päris kena. See võtab natuke natuke aega koostada ja põhimõtteliselt on meil tühi taotluse mis tegelikult ei tee midagi. Aga see kogub. See on päris vinge. See on palju parem kui C, ah? Olgu siis olgem proovida midagi lisada. Üks fail, mis on natuke imelik siin nimetatakse storyboard. See on tegelikult suur, awesome funktsioon s-kood. Sest s koodi, saate tegelikult drag ja tilk elemente peale liides ja see on otseselt näha. Proovime seda. Me tilk label siin, "Hello World !!!" Saame keskus, mis. Päris lahe. Nüüd käivitada stop simulatsioon. Siin on meil "Hello World !!!" Me isegi ei tee mingit kodeerimine veel. Mida kuradit toimub? See, kuidas võimas Interface Builder saab. Keegi isegi ütles, et Saate ilmselt lihtsalt täielik app ilma kirjalikult ilmselt tuhat rida koodi lihtsalt kasutades Interface Builder. Aga see ilmselt ei ole Parim viis seda teha. Nüüd tegelikult pikali kodeerimine. Nii struktuur faili on tegelikult väga huvitav sest, nagu võite näha, et ei ole peamine ülesanne kuhugi. Vaata? Nagu me varem mainitud, näed, et see on rakendamise faili konkreetse klassi. Aga ei ole peamine kuhugi. Nii et kui on peamine? Tegelikult on peamine, kuid Peamine on tegelikult peidus sinult. Peamine on siin. See tundub tuttav. Ühesõnaga, mida iOS teeb sees peamine on see, et alati, kui peamine on nimetatakse, mis on põhimõtteliselt iga kord, kui rakendus on täidetud, siis loob objekti nimetatakse AppDelegate. Nagu juba mainisin, on kogu app on tegelikult objekti iseenesest. Nii et sel viisil, põhiliselt iOS app räägib tõlkija et OK, ma lähen, et luua toode nimega AppDelegate, ja mis saab olema minu app. Nii et sa pead minema läbi, et AppDelegate ja vaata, mida see kutt teeb. Minu töö on tehtud minu jaoks. Ja AppDelegate näed, et seal on mõned väga imelik funktsioone, ka tegelikult meetodeid, mis Apple on juba andnud teile. Mis need on? Need on tegelikult lihtsalt protokollid et ma rääkisin. Nii et need on sündmused, mis Apple on andnud teile alustada. Ei ole midagi mõnes funktsioonide kohe, aga kui me tahame initsialiseerida midagi meie app enne sattumist väljapanek Igal juhul on meil seda teha siin. Sa võid lugeda nime ja ma arvan, Üritus on tegelikult päris selge. Nüüd peamine on loonud objekti AppDelegate. Ja mida AppDelegate kavatseb teha tegelikult peidus ka teile. AppDelegate kavatseb alustada laadimisel ViewController laos. Nii see on põhimõtteliselt lähed alustada peale üles kõiki seisukohti, et teil on ja lihtsalt muuta vaade põhineb hierarhia. Nii et kui meil on ainult ühes vaates, mis on siin. Nii et see on ainus vaade et läheb nimetada. ViewController loogika on siin. See on kood, mis tegelikult kontrollib silmas me just nägin. Olgu, teeme siin midagi. Nii viewDidLoad kõlab juhul kui tegelikult on see ka delegaat, see on ka protokoll. Mida iganes arvates on koormatud, kõik sees funktsiooni kutsutakse. Sellisel juhul peaksime nägema "Tere Tianyu! ", Kui me käivitada programmi. Läheb natuke aeglane koostamise storyboard faile. Noh tegelikult, me ei näe väljund ta. See on päris lahe. Nüüd tõesti Mario. Ma lähen määratleda toimivad väga kiiresti. marioWithLevels: (int) tasemel tulemusi. Olgu, see on tegelikult fantastiline omadus s koodi auto valmimist. Nii et kui sa kirjutad ja kirjutad siseneda, see on juba loobunud template teid, mis on päris lahe. See peaks vaatama tõesti tuttavad kutid. Vabandust, see on minu süü. Olgu, lahe. See loogika peaks vaatama tõesti tuttav kutid, eriti lihtsalt Mario. Aga me nüüd välja printida kuni konsooli iga kord, sest me tahame kuidagi hoida jälgida, mida me printimist. Me ei kavatse kasutada tulemused kuidagi hiljem näidata print välja tuua kasutaja. Nii et selle asemel me lihtsalt nslogging kõike, mis me ladustamiseks kõik arvesse funktsioon kõne tulemusena kuid loogika on täpselt sama. Kui oleme lõpetanud, siis me lihtsalt printida meie tulemused. Ja siin printimise asemel läbi minu nimi, me ei kavatse helistada funktsioon. Vaatame, mis juhtub. Vabandust, ilmselt. Meil on kena väike püramiid siin. See on põhiliselt C, me oleme lihtsalt manipuleerides kui helistate funktsiooni ja kuidas funktsiooni nägema. Pole midagi erinevat. Aga see on tegelikult ei ole väga põnev siin sest me ei näe midagi iPhone app. Nii et kui sa tegelikult iPhone app-- kui sa tegelikult Mario iOS õigus nüüd, sa ei kavatse näha midagi, mis on midagi pistmist Mario sest kõik need väljundid konsool on peidetud kasutaja. See on see, mida sa näed, mis on "Hello World !!!" Ole hea. Nüüd proovime teha kasutaja vaata mida täpselt me ​​väljatrükk. Nii et me ei pea märgistama enam. Proovime aru saada, midagi muud, mis võiks olla kasulik. Seal on tegelikult üks element, mida nimetatakse tekstiväli, mis võivad väga kasulik meile. Sisuliselt näitab piirkonna teksti, mida saab muuta. Nii et tundub tõesti kasulik. Nüüd lohista see ja lastakse tal. Wow, meil on tekst eesmärgiga Meie arvates tõesti meeldib. See on natuke liiga suur. Teeme seda väiksem. Pane see keskus. Tee väiksem samuti. Nüüd on meil teksti arvamust, mida võiksime kasutatakse kuvamiseks meie lõpptulemuse. Aga praegu on see kindlasti ei hakka tööle sest seal on ei-- ViewController me lihtsalt määratletud ei tea, et on tekst eesmärgiga seal. Seega peame kuidagi loetu arvates me lihtsalt loodud klass, on juba meiega tulla. Kuidas me teeme, mis on tegelikult tõesti maagiline. Nii avada storyboard. On olemas spetsiaalne [kuuldamatu] nimetatakse [? assistent?] [kuuldamatu]. Kui klõpsate seda, see on läheb avama kaks faili. Üks on klassi ja teine on vastava silmas seda. See on väga, väga kasulik. Ja olgem lihtsalt läheb läbi .h faili. Kontroll, see on [kuuldamatu] loogika. Vajutage Kontroll ja lohista Teksti vaadet deklaratsiooni. Me läheme helistada, et outputView. Ühendage. Nii et siin me oleme kuulutanud uue vara meie ViewController klassi. Ja uus vara on lihtsalt teksti vaade oleme loonud liidese hoone. Nii et kuidas me võiksime juurdepääsu kõigile andmetele ja manipuleerida kõike, mis on sees vaatel, mis on fantastiline. Nii meie tegelik kood, olgem sellega midagi teha. Nii et see aeg, mil me oleme nagu trükkimine välja lõpptulemuse Mario, me oleme ei logides midagi. Ma mõtlen võiksime hoida metsaraie avalduse. Lisaks sellele, et meil Kirjuta näit me lihtsalt loodud vaatel, mis on UI textview me lihtsalt loodud. Nüüd vaatame, mis juhtub. Wow. Meil on püramiidi app kohe. Nii saab kasutaja näha meie toodangut, kuna oleme kopeeritud väljund meie koodi meie liides. See on päris hea. See on tegelikult ei ole, et põnev, sest me can-- Kõik app teeb on näitab püramiidi teile, ja seal on midagi, mida saate teha. See ei ole eriti põnev. Nüüd teeme nuppu mis selge seisukohti. Tundub, et nupp on abiks. Lohista. Button üks. Button kaks. Nii et kui me klõpsake vasakul nuppu, pidades peaks selge. Seal peaks olema midagi ekraanil. Ja kui me klõpsake parempoolset nuppu, Mario, arvates läheb jälle ilmuvad. Nii et see, kuidas me ka ei magic värk, kontrolli ja drag klassi deklaratsioon in assistent director-- in assistent vaataja. Sel juhul me täpsustades et see peaks olema tegevus. clearMario. Nii et siin me oleme juba loodud meetmega clearMario, mis on meetod, mis oleks nn kui me vajutage nuppu selge. Nii et meie tegelikult koodi, lähme lihtsalt pane väljund teksti ja vaatel ei millekski, ja sel viisil see tundub olevat selge. Lisaks sellele, loome teist meetodit nimetatakse runMario. Oh kahju, et ei tohiks olla vara. Olgu, mis peaks Olgu tegu samuti. Ja kui see funktsioon on nimetatakse, me lihtsalt joosta Mario kümme. Loodetavasti saab trahvi. Kas see kompileerida? Jah. Nüüd on meil vaadata. Meil on väljund. Ja olgem lihtsalt näha, mis juhtub. See on läinud. See on jälle tagasi. Nii et siin me oleme määratud millist funktsiooni nimeks saab millal me kirjutad midagi, kui me vajuta konkreetset nuppu. See on põhiliselt eesmärgi meetmete kava jaoks sündmustepõhine programmeerimine Eesmärk C. Lisaks sellele, see ei ole väga põnev sest me ei saa muuta kuidas kõrge püramiid on, nii et me ilmselt tahad kuidagi saada kasutajalt ja kõrguse muutmiseks püramiidi põhjal, mida nad toodangut. Nii et me teeme seda. Nii et see aeg, mil me nimetame runMario, me ei ole lihtsalt helistada Mario otse. See üks pealkiri. Delegaat. See on väga huvitav. Mis on delegaat? Ma panen ise siia. Ja me näeme mida see tähendab hiljem. Nii et siin me oleme põhimõtteliselt loodud konkreetsel juhul nimetatakse UI alert pidades. UI alert on Põhimõtteliselt, mida te vaata iga kord midagi hüppab üles ja küsib sisend, nagu mis juhtub, kui sa üritad osta midagi App Store. Lisaks sellele, kui te luua, siis me lihtsalt näidata teate. Olgu, lähme lihtsalt kiiresti testiga, et töö või mitte. See on väga lahe. Nüüd tegelikult luua input väli UI teate. See, kuidas me seda teeme. Ja meil peaks olema vaatel hoiatusteade. Väga lahe. Ütleme nii, et 10. See ei tee midagi õigesti nüüd, sest kõne tegelikult ei muutunud täidesaatva Mario. Nii on see muutunud veidi natuke imelik, sest iga kord, kui meil vajutage nuppu all, kui me vajutage nuppu alert, midagi peaks juhtuma, kuid seda ei juhtu. Kuidas jõuavad? Kuidas me teame, et kasutaja pidas alert ja juba sisestatud number, sest kohe midagi tegelikult toimub. Noh, sa oleks võinud arvata see õigus, delegatsioon. Nii et lisaks kõigile Nende deklaratsioonide meil on vaja lisada uus delegatsioon ta kutsus UI alert delegaat. Nii et iga suhtlemist või sündmuse et me ei kavatse olla koos UI alert läheb käidelda meie klassi ka. Niisiis lisaks sellele, on alert vaatamiseks kliki nuppu indeks. See on saavutatud. Nii et sel juhul on meil already-- nii et meil on selgus, protokoll, mis tegelen juhul, kui me klõpsake nuppu Valmis valvel arvates. Nii et iga kord, kui me jätta alert arvates see peaks toimuma. Lubage mul seda testida väga kiiresti. Noh tegelikult oleme jõudnud siin. Nii et siin, mida me ei tegelikult saada on tegelikult saada the-- Nii me saada tahame teksti, mis meil varem kantud alert. Ja mis põhineb teksti, me oleme läheb näidata Mario. See on väga kiiresti välja kui ta tegelikult töötab või mitte. Nii et juhul, kui me sisend, oletame, 10, peaksime nägema 10. Väga hea, meil on mitmeid siin. See on päris hea. Nüüd on viimane samm on olema-- Nii Viimase sammuna peame tegema just nüüd lihtsalt helistada Mario tasandil sisendi põhjal et oleme kasutusele võetud alert. Seega peame muutma Selle stringi iOS. Staatiline overflow on väga võimas. Ja siis me lihtsalt helistada ise marioWithLevels väärtus. Vaatame, tahan, et tegelikult töötavad või mitte. Me juba andnud püramiid. Proovime kõrgust muuta. See tegelikult toimib. See on päris lahe. Nii et nüüd saab lihtsalt input mingit väärtust, mida soovid. Ütleme nii, et neli. See on päris vinge. Nii et see on põhimõtteliselt tõesti kiire näiteks kuidas luua projekti s koodi ja kuidas tõesti kiiresti juhtmetega ühendada mõned väga lihtsad sündmusi ja ülesandeid. Nii allikas läheb panna Internetis hiljem. Nii et kui olete huvitatud kuidas iOS Mario töötab, Ma panen täpselt sama projektide peale CS50 veebisaidil hiljem. Me põhimõtteliselt teha Suvel ja enne kui me lõpetada Ma tahan juhtida kutid mõned tõesti awesome ressursse, et on kättesaadavad Internetis. Ilmselt Apple dokumentatsioon saab olema väga kasulik. Kuid lisaks sellele, I eriti Soovitame neli allikat, kood kooli, puu maja, AppCoda ja WWDC videos. Kood koolis ja puu maja on Kahe Internetis Hariv veebilehed, mis konkreetselt keskenduda tarkvaratehnika. Eriti kood kooli, nad on tõesti hea juhendaja iOS. See on tõesti kiire näiteks seda. Nad tegelikult luua tõeliselt cute-- vaadata, et väike armas iPhone dude seal, see on päris vinge. Ja kuidas nad selgitavad Eesmärk C süntaks on täiesti selge. Tree house on sama. Ja AppCoda on foorum. See on tegelikult blogi, mis viidi läbi mida tõesti kogenud Eesmärk C programmeerija. Ja kõik need õpetused AppCoda on päris lühike ja lihtne rakendada, väga soovitatav. Ja kui sa oled arendaja, kindlasti minna kontrollima kuidas WWDC videos, kus saab õpivad viimaseid iOS programmeerimine tehnikaid, API ja raamatukogud. Nii et on päris palju see seminar. Tänan sind nii palju. Ja ma loodan, et teil on lõbus luua oma iOS app.