TIANYU LIU: Hej, kiel fartas ĝi iras ĉiuj? Kaj jen estas la IOS App programado de Objective C seminario. Kaj mia nomo estas Tianyu Liu. Mi estas Lowell junior nun, koncentrante en komputiko. Do en ĉi tiu seminario mi estas tuj instruos vin infanoj Iomete da kiel fari app. Yay, emocias por ĝi. Do antaŭ ol ni eĉ komenci subnaĝado en la efektiva programado flanko, ni nur vere rapide paroli kial povus vi volas konstrui iOS app? Kial iOS tiel timinda? Do la unua problemo, la unua kio estas bela awesome por ni, precipe kiel CS50 studento, estas ke iOS uzas Objective C. Nu, tie estas nova lingvo nomata Swift, sed ni ne tuj uzi ke en tiu seminario. Se vi interesiĝas pri Swift, tie Estas sendependa seminarion pri tio. Sed Objective C estas esence superaro de C. Signifo ke ĉio vi uzas en C povas esti tradukata en Objective C tre facile. Kiel vi eble vidos poste, ke efektive estas iuj tre bazaj sintakson, estas esence ekzakte la sama, C kaj Objective C. Do, ekde vi prenis CS50 supren ĉi tien, vi jam scias Objective C, almenaŭ 40%. Ankaŭ, Apple havas vere fortika API por iOS. Ekzistas multe de vere freneza tion vi povas fari kun ĝi. Unu el kiuj estas iu efektive kreis iOS app por kontroli aŭtoj, kiuj Estas sufiĉe interesa. Probable helikoptero estas pli ekscita. Sed tiel estas kiel potenca la iOS API povas esti. Kaj kiel vi povus havi komprenis nun, la pilo superflui estas probable unu el la plej grava linio rimedoj havebla al vi. Kaj bona novaĵo, ĉar ĉiun sola problemo, kiun vi povus pensi dum konstruado via projektas finon en Objective C, estas verŝajna stako overflow respondo. Estas nur timinda. Krom tio, iOS estas vere platformo kie vi povas atingi grandegan aŭdienco kun malmulta penado. Ne estas kiel Android, kie ĉio estas bela fragmentado. Ĉio iOS estas unuigita. Kaj tiel longe, kiel oni kreas app por iPhone, Vi povas tre facile haveno kiu al la iPad, iPad mini, aŭ malsamaj iPhone grandecoj. Tiuj estas ĉiuj vere konvena. Kaj estas ĝuste vere bona por impresado viaj amikoj. Vi povas simple teni iPhone informu viajn amiko bona, tiu estas la app mi faros. Vi povas fari tion dum iu labortablo apps, kiu estas bela. Bone, nun ni reale preni en la lingvon Objective C. Do kial ni ne komencu per kelkaj vere bazaj sintakso. Kiel mi menciis antaŭe Objective C Ĝi estas esence superaro de C. Do multan baza sintakso estas fakte precize la samaj. Deklarante variablo kaj aldonante du variabloj kune estas precize kiel ni agis en Mario. Nenio nova ĉi tie. Simile, la Lodger por buklo kaj kondiĉo estas ankaŭ la sama. Vi povas fari por buklo kiel vi ili faris en Mario [inaudible]. Kaj vi povas fari kondiĉoj ĝuste kiel kio vi estis farante en via antaŭa p aroj. Tamen, Objective C ne estas tute C, kaj estas iu kiu estas ia stranga pri tio. La unua estis ke kiam vi estas faranta programado C, vi tipe nomas inkluzivi kaj tiam biblioteko nomo. Sed en Objective C vi nomas ke importo. Esence dirante funcionalidad, nur malsamaj nomoj. Kaj la kordoj estas vere iomete stranga. Vi povas vidi, ke la unua kio estas speco de stranga estas ke vi havas belan weird-- sorry-- vi havas belan weird NS subskribi super tie. Kaj la dua afero tio estas speco de stranga Estas vi havas ĉe-signo antaŭ efektive deklarante la kordo. Do la ĉe-signo esence signifas ke ŝnuro ne estas nur ĉeno, ĝi estas fakte objekto. Ni intencas ekspliki kiu poste tiel ili ne paniko se vi faras ne kompreni kion tio signifas. Kaj impreso al konzolo estas iomete malsama ĉar en C ni nomas printf, sed en Objective C ni nomas [inaudible]. Vi estu scivolante kio estas tio. Tio estas esence printf, nur malsama lingvo. Ĝuste la sama uzado, ĝuste la sama funcionalidad. Nu ĝi rezultas ke Objective C reale havas ns prefijo en preskaŭ ĉio, ĉiu baza datumtipo, nsstring, nsarray, nsdictionary. La kialo estante kiu ns efektive staras por sekva paŝo, kiu estas entrepreno kiu Steve Jobs fondita, kiu estas kompanio kie la lingvo Objective C naskiĝas. Do tiu estas esence tradicio. Mi scias ke estas iom stranga, sed estas Apple. Do iu kiu estas eĉ weirder ol tio estas funkcio deklaro. Tio estas tre malsama de kion ni vidi en C, ĉar tie ĝi reale ne aspektas kiel C anymore. Kion vi havas here-- per la vojo ĉi ne estas kuglo punkto, ĉi estas minuso. Vi havas minuso paréntesis void kaj tiam la funkcio nomo. Ni simple diru se ni havas saluton mondo, tiam la reveno tipo estus malplena ĉar ni revenos nenion. Kio akiras vere stranga estas ke kiam vi estas havi pli ol unu parametro pasante en sama funkcio kiu estos vere stranga kiel montrita tie. Ni havas metodon nomo, nomata addInt al [inaudible] kaj ni pasante unu parametro. Sed post tio, ni havas pli metodon nomo alvoko kun. Kaj post kun ni pasante la dua parametro. Tiu estas vere iomete stranga, sed ĉiuj tiuj funkcio deklaroj sekvi la saman modelon kiel tiu. Ni havas minuso komenci kun. La minuso povus esti signo kelkfoje bazita sur kio klaso de metodo Estas tio. Metodo estas esence alia nomo por la funkcio. Kaj ni tuj klarigi ke poste kiam ni parolas pri objekto orientita programado. Vi unue entajpi la reveno tajpi ene de krampoj, post kiu venas la metodo nomo. Vi pasante unu parametro. Kaj se vi havas pli parametroj vi bezonas etendi la metodo nomon kaj esence skribi iun pli tie. Ĝi povus esti io vi deziras. En nia kazo estas kun. Sed vi povus diri fino, aŭ aŭ aŭ abc plena trinkejo, kion vi volas. Kaj tiam post tio vi pasante parametro b. Tiu estas vere stranga konvencio sed ni estas tuj vidos kial Apple volis fari tion tre rapide. Do kiel vi nomas funkcio? Nomante funkcio en Objective C estas ankaŭ malsama de C. Reale, nomante funkcio en Objective C Estas pli kiel vi parolas al iu. Ĉi tie ni havas memon, kiu nomata objekto. Vi esence diri la kontesti mem diri "Saluton Mondo!" Tio estas kiel nomi la funkcion. Objekto kaj metodo nomon kombinita reciproke. Kaj tiu estas kie la bizaran etendo por metodo nomon vere eniras en ludo. Ni rigardu la dua ekzemplo. Ni nur difinis metodo nomata addInt kun bla bla bla. Do en tiu kazo kiam oni nomas ke specifa [? mesaĝo?] ĝi okazas aspekti kiel mem addInt: 10 kun: 2. Ĝi sonas kiel la angla. Kvankam la funkcio funkcio deklaro estas stranga, la punkto de Objective C La metodo deklaro ŝablono, estas ke kiam vi nomas la funkcio aŭ metodo ĝi sonos kiel reala angla. Do estas tre intuicia unufoje vi eniros en gxin. Precipe tiukaze kie vi povas esence vidi ke la funkcio nomo estas ia dokumentante. Vi ne bezonas ajnan pli klarigo vidi kio ĝuste okazas, kio ekzakte unu parametro faranta. Irante preter tiu, tuj parolos iom iom pri objektema programado. Objektema programado estas unu el la fundamentaj programado teknikoj aŭ ŝablonoj kiuj estas uzita de Objective C. Objective C nomas Objective C, ne C, por vere bona kialo. Do antaŭ ol ni eniros en Objective C sintakso, Ni vere rapide rigardi kio ĝuste estas objekto. Ni probable faris ion kiel objekto antaŭe, kiu nomas la struct kiam vi estas implementando arbo aŭ ligillisto aŭ [? provi. ?] Do, ĝi estas esence kiel struct, sed estas multe pli potenca ol tio. Objekto havas metodoj kaj propraĵoj. Metodoj estas esence funkcioj. Esence funkciojn kiuj specifaj al certa objekto. Kaj propraĵoj estas esence la kampo oni indikas en la struct. Do por ĉiu unuopa objekto ni havos iuj propraĵo kiu havas iuj variabloj kiuj estas specifaj al la objekto. Kaj ni havas kelkajn funkciojn kiuj estas ankaŭ specifaj al la objekto. Kaj la funkcioj estas nomitaj metodoj kaj la variabloj estas nomitaj proprietoj. Estas nur fantazio nomo. Dum vi fakto, ĉiu ununura vido vi vidos, kiam vi malfermos iOS app, ni nur diras Twitter aŭ Facebook, ĉiu ununura vido vi vidas estas objekto. Kaj eĉ la tuta app estas objekton komence. Tre interesa koncepto. Kaj kial ni volas objekto orientita programado? Do vi povas imagi, ke kiam vi programo metas belan komplika. Ni simple diru, kiam vi estas implementando ŝaktabulo, la logiko tuj esti vere komplikita. Vi havas 36 malsamajn pecoj, tiel ke se vi volas skribi logikon por ĉiuj 36 malsamaj pecoj en ŝako, ke tuj estos multa malsamaj funkcioj kaj variabloj. Estas multa da afliktoj. Kaj probable vi estas iranta skribi malsama metodo aŭ malsama funkcio por ĉiu de la peco al akurate kontroli kion ili faras. Sed se vi faras objektema programado, ĉiuj tiuj pecoj povas abstraída en unu sola objekto. Kaj la objekto havos iujn komunajn propraĵoj, kiel kia peco tio estas? Kio koloro estas ĝi? Kiel ĝi movas? Kaj en tiu vojo vi havos multe simplificado la logiko de tio. Do ĝi estas nur vere bona vojo fari komplikaj programoj, kaj hierarkia rilato ene de la programo, tre simpla. Kiel ni iras vidi kial tre rapide kiam ni fakte faras programming-- kiam ni estas reale farante S kodo Programado sesio poste. Nu krom tiu, objektema programado Estas ĝuste amuzega. Vi alvenis al desegni vian propran celon. Vi alvenis al desegni kion faras ĝi aspektas kiel sola. Ne estas ĝuste respondon al ĝi. Kaj estas tute interesaj. Do en objektema programado, du fundamentaj konceptoj Estos klaso kaj petskribon. Klaso estas esence ŝablono por objekto. Kaj petskribon estas esence unu specifa objekto. Ni simple diras vi farante biskviton. En tiu kazo, ĉiu unuopa kuketo vi efektive finas kun tuj esti objekto. Sed la kuketon telero vi uzas por baki ĉiuj kuketoj estos klaso. Klaso estas esence ŝablono. Kaj la petskribo estos unu specifa objekto kreis el tiu klaso. Kaj petskribon kreiĝos surbaze klaso deklaro, kiel ni vidos en postaj diapozitivoj. Do ni vere faras vere rapida ekzemplo [inaudible]. Diru ni deklarante objekto por kato. La celo devus have-- la kato klason havas iujn proprietojn kaj metodoj. Kia propraĵoj cxesigxu la klaso have-- devus la kato havas? Ekzemple, koloro, aĝo kaj raso, tiuj Estos variabloj kiuj estas specifaj por ĉiu kato. Kaj tiuj estas iuj aferoj ke ni uzu por priskribi katon. Kian metodon, Kaj kia povas kato faras? Kelkaj rapidaj ekzemploj estus persekutado muso, manĝi fiŝon aŭ simple meow. Tiu estas vere rapida Ekzemplo de kato klaso. Kaj vere specifan kato objekto estos kato kie ni specifas la koloro, la aĝo kaj raso. En tiu kazo, nia celo estas ne plu estas klaso anymore. Ni kopiu la ŝablonon de la klaso kaj ni specifi ĉiu specifa informo al tiu specifa objekto por igi ĝin sendependa. Kaj kiam vi nomas metodon ene objekto, vi nur nomas meow sur la celo, kiu estas la kato vi ĵus kreis. Probable vi presos ion kiel "Saluton Mondo! Meow ". Pretty cute. Bone, ni nur eniri en iuj detaloj kaj vidu kio ĝuste faras tion traduki en esti iOS programado. Do en iOS programado ĉiu unuopa klaso estos implementado en du dosierojn. Unu dosiero estas ĉi tie, kiu nomas la interfaco. Alia dosiero estas ĉi tie, kiu nomas efektivigo. Tipe la interfaco havos extension.h kiel ni vidis en C bibliotekoj. Kaj implementación dosiero tuj havos extension.n. Estas speco de stranga. Sed .n signifas reale .c, ne ekzistas fundamenta diferenco inter tiuj du. Do en ĉi tiu kazo, ni povas vidi ke ni deklarante interfaco, Kato: objekto. Nomata heredo. Ni esence heredante la kato klaso de la objekto klaso. Do ĉiu propraĵo kaj metodo kiu estis antaŭe difinita en la objekto klaso estos aŭtomate difinita en katon klaso ankaŭ. Krom tio, ni difini koloron, raso, kaj aĝo, tri variabloj. Tio fakte aspektas kiel io vi faris antaŭe. Ĝi aspektas kiel struct. Tio estas esence la sintakso por struct deklaro, kaj kiu estas plene korekta. Kaj ĉar mi menciis antaŭe, la diferenco al struct kaj objekto, unu el la fundamentaj diferencoj estas ke celo havas metodon, dum struct nur havas variabloj. Do krom la proprietoj aŭ variabloj ni kreis por la objekto, ni entajpi iun metodon. Ni simple diras ĉi tie ni havas du metodoj, oni estas meow, alia estas postkuro muso. Ni probable volas esti pasante parametro bazita sur nia antaŭa metodo deklaro skemon. Vi probable volas esti pasante muson. Kaj vi probable volas reveni al bool montras Se via kato havas sukcese kaptis la muson aŭ ne. Tiu estas la interfaco, sed ni povas vidi ke la interfaco efektive ne fari ion. Ĝi nur klarigas programon kion exists-- kio ekzistas en la kato klaso. Do en ordo por la programo por fari ion, ni bezonas havi implementación dosierojn. Do jen, la unua aĵo kiun ni faras estas evidente ni importi la interfaco. Post ni importi la interfacon, ni difini la metodo. Ni simple diru tie meow estus ĝuste presi "Saluton Mondo!" al la konzolo. Kaj post la efektivigo dosiero, ni preskaux farita. Tiu estas esence klaso Deklaracio por unu klaso. Do nun la demando iĝas, Kiel do vi deklaras variablon? La vojo vi uzas klason krei objekto en Objective C estas skribita tie. Vi unue entajpi ke ĉi estas kato puntero, ĉar ĉiu objekto en Objective C fine estas implementado kiel puntero. Kaj vi nomas la klason, voki ilin kiel alloc, kiu estas esence malloc, dirante al la mastruma sistemo ke vi bezonas iun memora spaco por tiu celo. Post ke vi havas objekto jam kaj vi nur pravalorizi ĝin. Tiu estas nur konvencio. Mi scias, ke tio estas iom bizara, sed tiu estas vere kiel Apple faras ajxoj. Asignanta propraĵoj estas fakte bela simpla. Estas tre simila al kion vi faras kiam vi atribuante iuj specifaj kampo ene de struct. Vi nur devas la variablo nomo, la proprieto nomo, kaj atribui specifan valoron al tio. Kaj alvokinte metodo estas tre similaj. La nomante metodon estas esence kion min raportas por nomi ajnan metodon en Objective C. Vi pasante objekton en tiu kazo tuj estos myCat, kaj vi pasas la metodo nomo. Kvazaŭ vi parolas al la objekto, myCat, ke vi devus meow. Estas sufiĉe interesa. Post tio, ekzistas unu pli esenca dezajno ŝablono ke ni bezonas paroli pri antaŭ alveni al reala S kodo. Tio dezajno ŝablono nomiĝas evento gvidita programado. Tiu estas ankaŭ probable unu el la plej fundamentajn ideojn en iOS programado. Do vi verŝajne ne scias, kion ekzakte estas la evento gvidita programado, sed ne estas vere ke timigas. Nu fakte, vi havas jam faris tion antaŭe. Tiu estas unu el la linioj vi havas probable jam skribita en la lasta [inaudible] de CS50, google.maps.event.addListener (markilo, "Klaku", la funkcio () {}) :. Nomante ĉi linio vi estas esence dirante la komputilo ke ĉiufoje kiam la okazaĵo nomita "Klaki" okazas en la markilo, uzi tiun funkcion. Tio estas tre malsama de kion vi faros en mario.c. En mario.c vi ĵus kuras la programon fojon, ĝi provizas vin per eligo, kaj vi faris. Tio estas speco de kiel unu pafo programoj. Evento gvidita programoj Estas tre, tre malsama. Ni imagu, se Facebook estas unu ŝoton programo ne estas vere bona. Vi nur iru al Facebook unufoje kaj ĝi estas farita. Ĝi donas al vi kelkajn eligo kaj vi neniam atingis malantaŭe. Vi neniam alvenis ion pli. Do jen, speciale desegnon ni uzas estas okazaĵo dispelitaj, por ke ĉiu funkcio kaptado bazita sur kio okazaĵo okazis. Ekzemple, se ni havas butonon kaj ni entajpi ke krom se tiu butono estas klakita, vokas la funkcion nomita "Saluton Mondo!" En tiu maniero ni povas vere gestionar la funkcio logiko flui en tre fleksebla maniero. La uzanto povas fari aŭ voki funkcio kiu jam estis nomita. Ĝi estas tute bazita sur kio uzantoj fari. Do ni povas vidi, ke tio estas fakte multe pli bona ol mario.c. Kaj bona novaĵo estas ke ĝi estas fakte ne estas nova koncepto. Vi ĉiuj jam faris ke en la lasta problemo starigis. Do en Objective C ekzistas tri malsamaj diagramoj por evento gvidita programado. La unua diagramo estas nomita objektiva ago, kie vi ligos butonon gazetaro kun iu funkcio. Ni simple diru, kiam vi klakas iuj butonon, vi nomas iujn funkcion. Tiu estas tre simpla celo ago. La dua unu estas fakte la plej malfacila unu, ĝi nomiĝas delegacio sur protokolo. Ni intencas ekspliki ke en granda detalo poste. Kaj la tria maniero estas sciigo. Tiu estas vere ne tre grava kiel malproksima kiel ni raportas, ĉar la ŝanco ke vi tuj uzos sciigo en via fina projekto estas sufiĉe malalta. Do ni tuj salti ke parto. Kaj ni iras al plonĝi en delegacio sur protokolo. Do kio ĝuste estas protokolo? Aŭ kion ekzakte estas delegacion? Ni parolu pri protokolo komence. Protokoloj estas nenio krom okazaĵoj. Sed ĉi tiuj okazaĵoj estas donitaj al vi por Apple por komenci kun. Ekzemple, mi ne tute certa kio de vi infanoj uzas Apple originalaj app poŝto aŭ kontakto, sed ĉiufoje vi rulumu la tablo kaj premu la specifaĵoj ĉelo sur la tablo, kiuj estas evento. Kaj se vi volas fari ke evento de ci mem, ĝi estas fakte iom malfacila. Do Apple donis ke eĉ al vi por ke vi povas simple uzi rekte la eventon por fari ion en via propra. Protokoloj estas reale vere, vere vaste uzata en Objective C. Nu en Fakte, ĉiu ununura app havas ion kaptitaj app delegito. Ene de delikataj estas ĉiuj la protokolojn por ŝargi la app. Ni simple diras, ke estas evento por app faris ŝarĝo. Do kio okazu post vi havas kreis app, post vi malfermos la app, post fermi la app, aŭ post vi metis la iPhone dormi. Tiuj estas ĉiuj okazaĵoj kiuj havas jam donita al vi. Kaj origine ene tiuj eroj ne estos implementación. Apple ĵus diris al vi, ke tiu funkcio okazos kiam iu evento okazas, sed kion vi faros kun tio funkcio estas tute ĝis vi. Delegacio estas esence dirante al la klaso ke vi devus trakti tiujn protokolojn. Estas iomete malklara, sed estos multe pli klara kiam ni faras la s kodoj en ago. Delegacio sur protokolo estas reale tre fortika mekanismo en la senco ke se ni faros delegacio al specifa klaso, ni povas esence manipuli ĉiuj specoj de eventoj uzante ajna klaso ni havas, tre oportune ilo. Do unu rapida ekzemplo por delegacio sur protokolo estos kio mi ĵus parolis. Ĉi protokolo specife nomas tableview [inaudible] elektu rolon ĉe [? indekso?] [? pasinteco. ?] Do tiu estas okazaĵo kiu kaptus kiam vi efektive frapeti sur specifa ĉelo en via tableview, ni nur diros en via mail aux en viaj kontaktoj app. Ene funkcio estis origine farante nenion. La funkcio ne fari ion defaŭlte. Sed vi povas entajpi kion la funkcio faras, konsiderante kion vi volas el via app. Tre oportune ilo. Kaj kun ĉio, kion dirata, mi esence kovri iuj tre bazaj sintakson kaj fundamenta koncepto por Objective C programado, kaj ni povas fari iu s kodo. Multe pli ekscita. Do s kodo estas fakte iom abrumador kiam vi malfermas ŝin por la unua fojo. Unu rapida noto, do se vi volas fari IOS disvolviĝo, Mi forte rekomendas ke vi havas Mac. Ĉar faranta IOS disvolviĝo sur Windows estas vere, vere malmola. Estas doable, sed estas vere malfacile. Kaj vi definitive fari ne volis uzi g redakti. Do en s kodo ni havas pluraj malsamaj areoj. Kiam vi unue malfermu s kodo vi vidos navigado areo, kiu esence montras al vi ĉiujn dosieroj estas en via nuna projekto. Vi havas ilobreto areo, kiu estas esence administri vidoj, aŭ iuj iom rapida iloj pri s kodo mem. Kaj jen estas la fakta redaktoro areo. Tiu areo estas tre simila g redakto: sed multe pli bona ol g redaktu. Kaj en ĉi tiu rajto areo, estas vokis la utileco areo. La areo iĝas vere oportuna kiam vi kreas interfaco aŭ specifante kelkaj rapidaj setups por via app. Kaj la fina areo estas la depuración. Tiu areo enhavas la konzolo. Do kiam ajn vi diru printf, aŭ nslog en nia kazo, ĉiuj viaj rezultoj tuj estos presita tie. Bone? Mi supozas ke ni povas vere rapide fari ekzemplo por iOS programado. Kaj ni vere malfermi s kodo. Do ĉiufoje vi malfermi s kodo, estas tuj aperos io simila. Iĝos demandu vin Kion vi volas fari? Ĉu vi volas komenci ion hazarda, infana parko, esence vi povas simple provi kodon sen fakte fari al ajna app. Ĉu vi volas krei novan projekton? Aŭ ĉu vi volas daŭri labori sur la ekzistanta projekto? En nia kazo ni iras krei novan projekton. Do estas vere bela, S kodo reale havas jam donite iuj ŝablonoj por krei celojn. Se vi volas fari ludon, s kodo efektive havas ludon ŝablono por vi, havas paĝo bazitaj aplikoj, langeton bazita apliko. En ĉi tiu kazo, ni tuj fari iun tre simpla, kaj ni iras al uzi sola vido apliko. Post tio precize kion vi volas nomi via produkto, kaj kio estas via nomo, kio estas via ensalutilo, kaj Kiun lingvon vi uzas. Ĉi tie ni ne volas kontrolu uzante Kerna Datumo. Kerna Datumo estas esence databasing iOS. Se vi faras Kerna Datumo, s kodo tuj difini multe pli komplika klasoj por vi. Do por subteni ĉiu simpla, ni estas nur tuj faros sen Core Datumoj aktuale. La problemo ni tuj estos uzante estas that-- la problemo ni iras al iri kreante estas ke ni esence volas importi Mario de C al iOS app. Do ni nomas ke Mario-iOS. Kompreneble vi specifas kion vi volas meti en via projekto. Kaj tie ni iru. Do ĉi tiu estas iom abrumadora, sed ĉi tiu estas reale kion ni ĵus vidis en la diapozitivoj. Kaj la unua areo ni vidos nun estas esence projekto agordo. Do ĉio vi volas fari projekto, kia mekanismo, ni nur diras kia mekanismo ĉu vi deziras ke viaj app aperi sur? Ĉu iPhone, iPad aŭ universala? Do mekanismo orientiĝo, ĉiuj ĉi aĵoj. Ne tre grava, sed povus esti, sed ĉi Estas loko kie vi instalis via projekto se vi reale volas disfaldi al la Apple vendejo. Bone, ni rigardu iu kiu estas ene nia kodo. Ni iru tra la dosieron naviganto. Kaj tiuj estas ĉiuj dosieroj, ke jam venis kun la ŝablono, tre bela. Do kiam ni klaku unu el ili tiu estas kio similas. Tre simila al g redaktu. Sed vi povas vidi ke la sintaksa kolorigo estas probable iomete pli agrabla. Kaj estas vere multe pli potenca ol g redaktadon. Kaj vi povas auto kompleta multajn aĵojn por vi, kiel ni vidos tre rapide. Ni malfermu la depuración areon ankaŭ. Bone, kiel ni povas vidi, la konzolo estas ĝuste ĉi tie. Jenon vi tuj vidos kie vi estas en printf aŭ nsloging ion. Do sen pli enkonduko, ni reale kompili la app kaj vidu kio okazas. Unu esenca karakterizaĵo por s kodo, estas ke s kodo venas kun iPhone simulilo. Do vi ne bezonas havi iPhone provi vian projekton, s kodo povas simuli ke por vi, kiel ni povas vidi nun. Ĝi estas sufiĉe agrabla. Ĝi estas prenante iom iom da tempo kompili kaj esence ni havas malplena apliko, kiu fakte nenion faras. Sed ĝi kompilas. Estas bela awesome. Estas multe pli bone ol C, huh? Bone, do ni provu aldoni ion. Unu dosiero kiu estas iomete weird tie nomiĝas storyboard. Tiu estas vere granda, awesome karakterizaĵo por s kodo. Ĉar en s kodon, vi povas fakte trenu kaj faligi elementoj sur la interfaco kaj ĝi rekte montri supren. Ni provu tion. Ni faligis etiketo tie, "Saluton Mondo !!!" Ni povas centri tio. Sufiĉe malvarmeta. Nun ni kuru ĉi halto simulado. Ĉi tie ni havas "Saluton Mondo !!!" Ni eĉ ne fari ajnan kodigo ankoraŭ. Kio la Heck okazas? Jen kiom potenca Interfaco Builder povas esti. Iu eĉ diris, ke Vi povas probable simple kompletigi app sen skribo probable mil linioj de kodo nur uzante la Interfaco Builder. Sed probable ne la plej bona maniero fari ĝin. Nun ni reale preni malsupren al kodigo. Do la strukturo por la dosiero Estas vere vere interesaj ĉar kiel vi povas vidi, tie Estas neniu ĉefa funkcio ĉie. Vidu? Kiel ni menciis antaŭe, vi povas vidi ke tiu Estas implementación dosieron por specifa klaso. Sed ne ekzistas ĉefaj ie. Do kie estas ĉefa? Efektive, estas la ĉefaj, sed la ĉefa fakte neatingebla por vi. La ĉefaj estas ĉi tie. Tio aspektas familiaraj. Do esence kion iOS faras ene ĉefa estas ke kiam ajn ĉefajn estas nomita, kiu estas esence ĉiufoje kiam la app estas ekzekutita, ĝi kreas objekton nomitan AppDelegate. Kiel mi menciis antaŭe, la tuta app estas vere objekto per sin. Do tiamaniere, esence la iOS app estas diranta la tradukilo ke OK, mi tuj kreos produkto nomata AppDelegate, kaj ke tuj estos mia app. Do vi devas iri tra kiuj AppDelegate kaj vidi kio tiu ulo estas faranta. Mia laboro estas farita por mi. Kaj en AppDelegate vi povas vidi ke estas iuj vere strangaj funkcioj, nu fakte metodoj, kiuj Apple jam donis al vi. Kion tio signifas? Tiuj estas fakte ĝuste protokoloj ke mi parolas. Do tiuj estas okazaĵoj kiuj Apple transdonis al vi komence. Estas nenio en iuj de la funkcioj nun, sed se ni volas pravalorizi ion por nia app antaŭ akiranta en montranta ajna vidpunkto, ni faru tion ĉi tie. Vi povas simple legi la nomon kaj mi supozas la okazaĵo estas fakte vere klara. Do nun ĉefa kreis objekto por AppDelegate. Kaj kio AppDelegate tuj faros Efektive ankaŭ kaŝita de vi. La AppDelegate tuj komenci ŝarĝante la ViewController stoko. Do ĝi estas esence tuj komenci ŝarĝi ĉiujn vidpunktojn kiuj vi havas kaj ĝuste redonu la vido bazita en la hierarkio. Do en ĉi tiu kazo ni nur havas unu vido, kiu estas tie. Do tio estas la sola vidpunkto ke tuj nomos. La ViewController logiko estas ĝuste ĉi tie. Jen la kodo kiu reale kontrolas la vidon ni ĵus vidis. Bone, ni faru ion tie. Do viewDidLoad sonas kiel okazaĵo, kiam fakte tiu estas ankaŭ delegito, ĉi tiu estas ankaŭ protokolo. Do sendepende de la vido estas ŝarĝita, kio estas malantaux la funkcio nomos. En tiu kazo ni devas vidi "Saluton Tianyu! "Se ni kuras la programon. Ĝi faras iom malrapidan kompili storyboard dosierojn. Nu ja, ni vidos eliron por ĝi. Estas bela malvarmeta. Nun ni reale faras Mario. Mi iras al difini la funkcias tre rapide. marioWithLevels: (int) nivelo rezultoj. Bone, ĉi tiu estas reale la awesome karakterizaĵo de s kodo aŭtomata finaĵo. Do kiam vi skribas por kaj tajpu eniri, ĝi jam fordonis la ŝablono por vi, kiu estas sufiĉe malvarmeta. Tio devus rigardi vere familiara al vi uloj. Pardonu, tio estas mia kulpo. Bone, malvarmeta. Ke logiko devus rigardi vere familiara al vi knaboj, speciale ĵus Mario. Sed ni nun presi al la konzolo ĉiu ununura tempo, ĉar ni volas iel subteni aŭtoveturejo de kio ni estas presanta. Ni intencas uzi la rezultigas iel poste, por montri la presita el rezulton al la uzanto. Do anstataŭe ni ĵus nslogging ĉio, kiun ni stokante ĉio enen funkcio alvoko rezulto, sed la logiko estas precize la sama. Post ni finos gxin, ni nur presi niajn rezultojn. Kaj tie anstataŭ videbligi Mian nomo, ni tuj nomas funkcio. Vidu kio okazas. Oops, evidente. Ni ja havas belan iom piramido el tie. Tiu estas esence C, ni ĵus manipulanta kie vi nomas funkcio kaj kiel tiu funkcio similas. Nenio malsama. Sed tio estas vere Ne tre ekscita tie, ĉar ni ne vidas ion de la iPhone app. Do se vi vere havas iPhone app-- se vi vere havas Mario iOS dekstra nun, vi ne iros vidi ion, kio havas nenion kiu vidi kun Mario, ĉar ĉiuj tiuj eliroj en konzolo estas kaŝitaj al uzanto. Jen kion vi vidas, kio estas "Saluton Mondo !!!" Ne bona. Nun ni provu fari la uzanto vidos kio ĝuste ni presi ekstere. Do ni ne bezonas etiquetar anymore. Ni provu kaj elkompreni ion alia ke povus esti utila. Ekzistas fakte unu elemento nomata tekstujon, kiu povus esti tre helpema al ni. Ĝi esence montras regiono de teksto kiu povas esti redaktata. Tiel ke aspektas vere utila. Nun ni treni ĝin kaj malfiksi ĝin. Wow, ni havas tekston vido en nia vido, vere fantazio. Tio estas iomete tro granda. Ni faru ĝin pli malgranda. Metu ĝin en centro. Faru ĝin pli malgranda ankaŭ. Nun ni havas tekston vido, kiu povus kutimi montri nian finan rezulton. Sed nun ĝi estas definitive ne tuj funkcios ĉar ekzistas no-- la ViewController ni ĵus difinita ne scias ke estas teksto vido tie. Do ni devas iel ligas la teksto vido ni ĵus kreita kun la klaso kiu jam venis kun ni. La vojo ni fari tion estas vere vere magia. Do malfermu storyboard. Estas speciala [inaudible] nomata [? asistanto?] [inaudible]. Kiam vi klakas ke, ĝi estas tuj malfermi du dosierojn. Unu estas klaso kaj la alia unu estas responda vido por ĝi. Ĝi estas tre, tre helpema. Kaj ni nur iras tra la .h dosieron. Kontrolo, tiu estas [inaudible] logiko. Premu Kontrolo kaj trenu la teksto vido en la deklaro. Ni tuj nomas tiun outputView. Konekti. Do jen ni deklaris novan posedaĵo por nia ViewController klaso. Kaj la nova proprieto estas ĝuste la teksto vido ni kreis en la interfaco konstruaĵo. Do en tiu maniero povus aliro ĉiuj datumoj kaj manipuli ĉiu kio estas ene la eligo vido, kiu estas timinda. Do en nia reala kodo, ni faru ion kun tio. Do tiu tempo kiam ni estas kiel impreso el la fina rezulto por Mario, ni estas en ne ensalutadon nenion. Mi volas diri, ni povus teni la tala komunikaĵo. Krom tio, ni sendi la legado ni ĵus kreitaj por la eligo vido, kiu Estas UI textview ni ĵus kreita. Nun ni vidu kio okazas. Wow. Ni havas piramido en la app nun. Do la uzanto povas vidi nian eligo ĉar ni kopiis la eligo de nia kodo al nia interfaco. Estas sufiĉe bone. Ĝi fakte ne estas ke ekscita ĉar ni can-- Ĉiuj app estas faranta estas montrante piramido al vi, kaj ekzistas nenio vi povas fari pri ĝi. Ne aparte emocionante. Do nun ni faru butonon ke malplenigos la vidoj. Ŝajnas ke butono estos helpema. Trenu kaj faligu. Buton unu. Buton du. Do kiam ni klaku maldekstre butonon, la vido devus liberigi. Tie devus esti nenio sur la ekrano. Kaj kiam ni klaku la dekstra butono, Mario, la vido tuj aperi denove. Do tiu vojo ni ankaŭ faros la magio stuff, kontrolo kaj trenu al la klaso deklaro en la asistanto director-- en la asistanto spektanto. En tiu kazo ni preciziganta ke tio devus esti ago. clearMario. Do jen ni jam kreis ago nomita clearMario, kiu estas la metodo kiu nomus kiam ajn ni premas la butonon klara. Do en nia reale kodo, ni nur metis la eligo de teksto kaj la eligo vido al nenio, kaj aliflanken ĝi ŝajnas esti klara. Krom tio, ni kreos alia metodo nomata runMario. Ho bedaŭras, ke ne devus esti proprieto. Bone, ke devus esti agon ankaŭ. Kiam tiu funkcio estas nomitaj, ni nur kuri Mario dek. Espereble ke estos bone. Ĉu ĝi kompili? Jes. Ni nun havas opinion. Ni havas eliron. Kaj ni simple vidos kio okazas. Tio foriris. Estas returne. Do jen ni specifita kia funkcio nomos kiam ni tajpas en iu, kiam ni premas specifa butonon. Tio estas esence la objektiva ago skemo por evento gvidita programadon en Objective C. Krom tio, ĝi ne estas tre ekscita ĉar ni ne povas vere ŝanĝi kiom alta la piramido estos, do ni probable volas iel ricevas enigon el la uzanto kaj ŝanĝi la altecon de la piramido bazita sur kion ili eligo. Do ni tuj faros. Do tiu tempo kiam ni nomas runMario, ni ne ĝuste voki Mario rekte. Ĉi tiu titolo. Delegita. Tio estas tre interesa. Kio estas delegito? Mi tuj metis sin tie. Kaj ni tuj vidos kion tio signifas poste. Do jen ni esence kreis specifaj petskribon nomiĝas UI garde vido. A UI garde vido estas esence kion vi volas vidu ĉiufoje io popoj supren kaj demandas vin por enigo, kiel kio okazos kiam vi provas aĉeti ion sur app vendejo. Krom tio, kiam vi krei ĝin, ni nur montros garde. Bone, ni nur rapide testo volas, ke laboro aŭ ne. Tio estas tre cool. Nun ni reale krei enmetkampo por la UI garde. Tiel estas kiel ni faras tion. Kaj ni devus havi input vido por la atentigo. Tre cool. Ni simple diru 10. Ĝi estas nenion faras rajton nun ĉar la alvoko reale ne ŝanĝis por ekzekuti Mario. Do tiu revenis iom iom stranga ĉar kiam ajn ni premi butonon malsupren, kiam ajn ni premi butonon en la garde vido, io devas okazi, sed tio ne okazas. Kiel ni kaptos ke? Kiel ni scias ke uzanto adiaŭis garde vido kaj jam eniris ciferon, ĉar nun nenio estas reale okazas. Nu, vi povus esti diveninta konvena, delegacio. Do krom ĉiuj tiuj deklaroj, ni devas aldoni novan delegacio al ĝi nomas UI garde vido delegito. Tiel ke ĉiu unuopa interago aŭ okazaĵo ke ni tuj havos kun la UI garde vido tuj manipulos per nia klaso ankaŭ. Do krom tio, estos garde vido klako butonon indekso. Tiu estas atingita. Do en tiu kazo ni havas already-- tiel ni havas eltrovis protokolo kiu manipulos la okazaĵo kiam Ni alklaku la Done butono en garde vido. Do ĉiufoje ni adiaŭas la garde vido, ĉi tio devus okazi. Lasu min provi ĝin tre rapide. Nu ja, ni atingis ĉi tien. Do jen, kion ni ne volas reale preni estas reale akiri the-- Do ni volas eliri la teksto, kiun ni havas antaŭe eniris en la garde vido. Kaj surbaze de teksto, ni estas tuj montri Mario. Tiu tre rapide rezultas se ĝi efektive funkcias aŭ ne. Do en tiu kazo, se ni enigo, diru, 10, ni devus vidi 10. Tre bone, ni havas nombro ĉi tie. Estas sufiĉe bone. Nun la lasta paŝo estos be-- Do la lasta paŝo ni bezonas fari nun Estas nur voki Mario kun nivelo bazita en la enigo ke ni metas en garde vido. Do ni devas konverti tiu ŝnuro en iOS. Statika overflow estas tre respektinda. Kaj tiam ni simple nomas mem marioWithLevels valoro. Vidu volas, ke fakte funkcias aŭ ne. Ni jam donis piramidon. Ni provu ŝanĝi la altecon. Tio efektive funkcias. Estas bela malvarmeta. Por ke nun vi povas simple input ajna valoro vi deziras. Ni simple diras kvar. Tio estas bela awesome. Do tiu estas esence vere rapida ekzemplo por kiel krei projekton en s kodo kaj kiel vere rapide telegramon supren iuj vere simplaj eventoj kaj funkcioj. Do la fonto tuj esti metitaj en linio poste. Do se vi estas interesata en kiel iOS Mario laboras, Mi tuj metis ekzakte la sama projektoj sur la CS50 retejo poste. Ni esence farita kun la somero, kaj antaŭ ol ni finos Mi nur volas atentigi vin infanoj al iuj vere awesome rimedoj ke estas haveblaj rete. Evidente la Apple dokumentado tuj estos tre helpema. Sed krom tio, mi speciale rekomendi kvar fontoj, kodo lernejo, arbo domo, AppCoda kaj WWDC filmetoj. Kodo lernejo kaj arbo domo estas du linio instrupova retejojn, kiu specife enfokusigi sur programado. Speciale por kodo lernejo, ili havas vere bona lernilo en iOS. Tio estas vere rapida ekzemplo por tio. Ili efektive kreas vere cute-- Rigardu tiun malgrandan cute iPhone dude tie, ĝi estas bela awesome. Kaj la maniero klarigi Objective C sintakso estas perfekte klara. Arbo domo estas la sama. Kaj AppCoda estas forumo. Estas fakte la blog kiu estis kuri per vere spertis Objective C programisto. Kaj ĉiuj tiuj lernilojn en AppCoda estas sufiĉe mallonga kaj facila de implementar, tre rekomendita. Kaj se estas desarrollador, definitive iri kontroli kiom la WWDC videoj kie vi povas lerni pri la lasta iOS programado teknikoj, APIs kaj bibliotekoj. Por ke estas preskaux ĝi por la seminario. Dankon tiom. Kaj mi esperas ke vi havas amuzon krei vian propran iOS app.