Tianyu LIU: Hey, com és que va tot el món? I aquesta és l'aplicació per iOS programació del seminari objectiu c. I el meu nom és Tianyu Liu. Sóc un jove de Lowell en aquest moment, concentrant-se en la informàtica. Així que en aquest seminari que sóc et va a ensenyar als nois una mica sobre com fer una aplicació. Yay, emocionar per això. Així que abans de començar si més no busseig al costat real de programació, anem a simplement molt ràpidament parlar Per què pot voler construir una aplicació per iOS? Per què és tan impressionant iOS? Així que el primer problema, el primer cosa que és bastant impressionant per a nosaltres, especialment com CS50 estudiant, és que iOS utilitza Objective C. Bé, hi ha un nou llenguatge anomenat Swift, però nosaltres no anem a l'ús que en aquest seminari. Si vostè està interessat en Swift, hi ha és un seminari independent d'això. Però Objective C és bàsicament un superconjunt de C. Significat que tot el que s'utilitza en C pot traduir-se en Objective C molt fàcilment. Com es pot veure més endavant, que, efectivament, hi ha alguns sintaxi molt bàsica, són bàsicament exactament de la mateixa, C i Objective C. Així, havent-vos CS50 fins ara, que ja Objectiu saber C, almenys 40%. A més, Apple té una realitat robusta API per iOS. Hi ha un munt de realment boig coses que poden fer amb ella. Un dels quals és algú en realitat creat una aplicació per iOS per als cotxes de control, la qual és força interessant. Probablement un helicòpter és més emocionant. Però això és el poderós l'API de iOS pot ser. I com és possible que tingui descobert en aquest moment, el desbordament de pila és probablement un els recursos en línia més importants disponible per a vostè. I una bona notícia, per cada únic problema, pot possiblement pensar mentre que la construcció de la seva projecte final en Objective C, és possible que hi hagi una resposta de desbordament de pila. És simplement impressionant. A més d'això, iOS és realment una plataforma on es pot arribar a un gran audiència amb poc esforç. No és com Android, on tot està molt fragmentat. Tot iOS és unificada. I mentre es crea una aplicació per a iPhone, vostè pot molt fàcilment port que per iPad, iPad mini, o diferents mides d'iPhone. Aquests són tots molt convenient. I és realment bo per impressionar als teus amics. Vostè només pot mantenir un iPhone i digues-li al teu amic bo, aquesta és l'aplicació que faig. Vostè pot fer que per a qualsevol aplicacions d'escriptori, la qual cosa és agradable. Molt bé, ara anem a aconseguir realment en el llenguatge Objective C. Llavors, ¿per què no comencem amb una sintaxi molt bàsica. Com vaig esmentar abans Objectiu C És bàsicament un superconjunt de C. Així que un munt de sintaxi bàsica són en realitat exactament el mateix. Declarar una variable i l'addició de dues variables juntes és exactament el que hem fet en Mario. Res de nou aquí. De la mateixa manera, l'inquilí per bucle i condició també és el mateix. Vostè pot fer un bucle tal com ho han va fer en un Mario [inaudible]. I pot fer-ho condicions de la mateixa manera que el que han estat fent en els seus conjunts p anteriors. No obstant això, Objective C no és completament C, i hi ha alguna cosa que és una espècie d'estrany en això. La primera és que quan estàs fent de programació C, normalment es diu incloure i després un nom de biblioteca. Però en Objective C es diu aquesta importació. Dient Bàsicament funcionalitat, només diferents noms. I les cadenes són en realitat una mica estrany. Es pot veure que la primera cosa que és una mica estrany és que tens una bonica weird-- sorry-- tens unes NS bastant estranys signar aquí. I la segona cosa això és una mica estrany és que tens una arrova abans de fet declarant la cadena. Així que l'arrova bàsicament vol dir que una cadena és no només una cadena, en realitat és un objecte. Anem a explicar que més tard el que no fer pànic si no ho fa entenen el que això significa. I la impressió de consola és una mica diferent perquè en C que anomenem printf, però en Objective C anomenem [inaudible]. Potser es pregunti què és això. Això és bàsicament printf, només un idioma diferent. Exactament el mateix ús, exactament la mateixa funcionalitat. Doncs resulta que Objectiu C realitat té un ns prefix en gairebé tot, cada tipus de dades bàsic, NSString, NSArray, NSDictionary. La raó és que ns en realitat significa Next Step, que és una empresa que Steve Jobs ha fundat, que és una empresa en la qual el llenguatge Objective C neix. Així que això és bàsicament la tradició. Sé que és una mica rar, però és Apple. Així que una cosa que és encara més estrany que és una declaració de la funció. Això és molt diferent del que veure en C, perquè aquí el que realment no s'assembla a C més. El que has aquí-- pel forma en què aquest no és un punt de bala, aquest és un signe menys. Vostè té un parèntesi signe menys buit i després el nom de la funció. Diguem que si tenir hola món, llavors el tipus de retorn seria nul·la perquè tornem res. El que es posa molt estrany és que quan estàs que té més d'un paràmetre passar a una mateixa funció que serà molt rar, com es mostra aquí. Tenim un nom de mètode, anomenat addInt a [inaudible] i estem passant un paràmetre. Però després d'això, tenim més anomenada nom de mètode amb. I després que estem passant el segon paràmetre. Això és en realitat una mica estrany, però totes aquestes declaracions de funcions seguir el mateix patró com aquest. Comptem amb un signe menys per començar. El signe menys podria ser un signe més de vegades sobre la base de quin tipus de mètode és la mateixa. El mètode és bàsicament un altre nom per a la funció. I anem a explicar que més tard, quan estem parlant d'objecte programació orientada. Primer s'especifica el retorn escrigui parèntesi a l'interior, després de la qual cosa ve el nom del mètode. Estàs passant un paràmetre. I si vostè té més paràmetres necessita estendre el nom del mètode i bàsicament escriure alguna cosa més aquí. Podria ser qualsevol cosa que vulguis. En el nostre cas és amb. Però es podria dir final, o, o, o abc bar complet, el que vulguis. I després, després que vostè és passant paràmetre b. Aquest és un molt rar convenció, però som anem a veure per què Apple volia fer-ho molt ràpidament. Llavors, ¿com es diu a la funció? Trucar a una funció en l'objectiu C és també diferent de C. En realitat, trucar a un funció en Objective C és més com si estiguessis parlant amb algú. Aquí tenim un mateix, el que es diu un objecte. Bàsicament, s'està dient la objectar acte a dir "Hello World!" Així és com es diu a la funció. Un objecte i un nom de mètode es combinen entre si. I aquí és on l'extensió estrany per nom del mètode realment entra en joc. Vegem el segon exemple. Ens acabem de definir un mètode anomenat addInt amb bla, bla, bla. Així que en aquest cas quan vostè està trucant que [específic? missatge?] que va per semblar-se a si mateix addInt: 10 amb: 2. Sona com anglès. Encara que la funció declaració de la funció és estrany, el punt de l'objectiu de C patró de declaració de mètode, és que quan vostè està trucant la funció o mètode sonarà com a real anglès. Així que és molt intuïtiva un cop arribi a ell. Especialment en aquest cas, on es pot bàsicament veure que el nom de la funció és tipus de documentació de si mateix. Vostè no necessita cap més explicació per veure què és exactament el que està succeint, el que exactament un paràmetre fent. Més enllà d'això, anem a parlar una mica poc sobre la programació orientada a objectes. Programació orientada a objectes és un de la programació fonamental tècniques o patrons que es utilitzat per Objective C. Objective C es diu Objective C, no C, per una bona raó. Així que abans d'entrar en Sintaxi de C Objectiu, Anem realment veure ràpidament ¿Què és exactament un objecte. Probablement hem fet alguna cosa com a objecte abans que es diu l'estructura quan s'està l'aplicació d'un arbre o una llista enllaçada o [? tractar. ?] Per tant, és bàsicament com una estructura, però és molt més potent que això. Un objecte té mètodes i propietats. Els mètodes són bàsicament funcions. Bàsicament funcions que un específic per a un determinat objecte. I propietats són bàsicament els camp s'especifica en l'estructura. Així que per a tots els objectes tenim alguna propietat que té algunes variables que són específics per a l'objecte. I tenim algunes funcions que també són específics per a l'objecte. I les funcions s'anomenen mètodes i les variables s'anomenen propietats. És només un nom de fantasia. Mentre fet, cada vista individual veus mentre obre una aplicació per iOS, diguem que Twitter o Facebook, cada vista única que es veu és un objecte. I encara que tota l'aplicació és un objecte per començar. Concepte molt interessant. I per què volem objecte La programació orientada a? Així que vostè pot imaginar que quan es programa que es posa bastant complicat. Diguem que quan estàs la implementació de tauler d'escacs, la lògica va a ser realment complicat. Vostè té 36 diferents peces, de manera que si vostè vull escriure lògica per a tots 36 peces diferents en escacs, que hi haurà una gran quantitat de diferents funcions i variables. És un munt de problemes. I, probablement, vostè va a escriure una diferent mètode o funció diferent per a cada un de la peça a exactament controlen el que fan. Però si ho fa orientat a objectes programació, totes aquestes peces pot ser abstret en un sol objecte. I l'objecte tindrà alguns comuns propietats, com quin tipus de peça és? De quin color és? Com es pot moure? I d'aquesta manera vostè té molt simplificada de la lògica de la mateixa. Així que és només una manera realment bona per fer programes complicats, i la relació jeràrquica dins del programa, molt simple. Com veurem per això molt ràpidament quan en realitat estem fent programming-- quan en realitat estem fent un codi S programació sessió posterior. Bé, a més que, programació orientada a objectes és només un munt de diversió. Has de dissenyar el seu propi objecte. Has de dissenyar el que fa que es vegi com vostè mateix. No hi ha una resposta correcta a aquesta. I és totalment interessant. Així que en la programació orientada a objectes, dos conceptes fonamentals serà de classe i instància. Una classe és bàsicament una plantilla per a l'objecte. I una instància és bàsicament un objecte específic. Diguem que vostè està fent una galeta. En aquest cas, tots els galeta que realment acaba amb serà un objecte. Però el plat de galetes que s'utilitza per coure totes les galetes seran una classe. Una classe és bàsicament una plantilla. I la instància serà un específica objecte creat d'aquesta classe. I es crearà una instància basat en la declaració de classe, com veurem en diapositives posteriors. Així que farem realitat una molt exemple ràpid [inaudible]. Diguem que estem declarant un objecte per a un gat. L'objecte ha de tener-- la classe de gats han tenir algunes propietats i mètodes. Quin tipus de propietats haurien dels classe tener-- ha de tenir gat? Per exemple, color, edat i raça, els serà variables que són específics de cada gat. I aquestes són algunes de les coses que utilitzem per descriure un gat. Quin tipus de mètode, o què pot fer un gat? Alguns exemples ràpids serien persecució ratolí, menjar peix o simplement miolar. Aquesta és una molt ràpida exemple de la classe de gat. I un molt específica objecte gat serà un gat on especifiquem el color, l'edat i la raça. En aquest cas, el nostre objecte és ia una classe no més. Copiem la plantilla de la classe i especifiquem cada informació específica a aquest objecte específic perquè sigui independent. I quan vostè està trucant un mètode dins d'un objecte, que acaba de cridar miol en l'objecte, que és el gat que acaba de crear. Probablement va a imprimir alguna cosa així com "Hola Món! Miolar. " Bastant valent. Molt bé, anem a entrar en alguns detalls i veure el que fa exactament això traduir en ser la programació iOS. Així que en iOS programació cada classe es durà a terme en dos arxius. Un arxiu és aquí, que s'anomena la interfície. Un altre arxiu és aquí, que es diu aplicació. Normalment la interfície de tindrà extension.h com hem vist a les biblioteques C. I fitxer d'implementació és tindrà extension.n. És una mica estrany. Però .n significa en realitat .c, no hi ha diferència fonamental entre els 2. Així que en aquest cas, podem veure que estem declarant interfície, Cat: objecte. Això es diu herència. Bàsicament estem heretant el classe gat de la classe d'objecte. Així que cada propietat i un mètode que va ser definit prèviament a la classe d'objecte es definirà automàticament en una classe de gat també. A més d'això, definim color, raça i edat, 3 variables. Que en realitat s'assembla cosa que has fet abans. Sembla estructura. Això és bàsicament la sintaxi per a la declaració struct, i que és totalment correcte. I com he esmentat abans, la diferència una estructura i un objecte, una de les diferències fonamentals és que un objecte té mètode, mentre que un struct només té variables. Així que a més de les propietats o les variables que hem creat per a l'objecte, especifiquem algun mètode. Diguem que tenim aquí dos mètodes, un és el miol, altra és ratolí persecució. Probablement Volem estar passant una paràmetre basat en el nostre mètode anterior model de declaració. És possible que vulgueu estar passant un ratolí. I és probable que desitgi per tornar un significant bool si el seu gat té èxit agafat el ratolí o no. Aquesta és la interfície, però nosaltres sí veure que la interfície de realitat no fa res. Simplement li diu a un programa el exists-- el que existeix en la classe de gat. Així que perquè la programa per fer alguna cosa, hem de tenir els arxius d'implementació. Així que aquí, el primer que fem és òbviament, importem la interfície. Després que importem la interfície, definim el mètode. Diguem aquí miau seria simplement imprimir "Hola Món!" a la consola. I després de l'aplicació arxiu, estem més o menys fet. Això és bàsicament una classe declaració d'una classe. Així que ara la pregunta és, Com es declara una variable? La forma d'utilitzar una classe per crear un objecte en Objective C està escrit aquí. Primer s'especifica que Això és un punter gat, perquè tots els objectes en Objective C finalment s'implementa com un punter. I es diu a la classe, cridar com alloc, que és bàsicament malloc, dient al sistema operatiu que necessita una mica d'espai de memòria per a aquest objecte. Després que vostè té un objecte ja i només s'inicialitzi. Això és només convenció. Sé que és és una mica estrany, però això és realment com Apple fa coses. Assignació de propietats es en realitat bastant senzill. És molt similar a el que està fent quan estàs assignant alguns específics camp a l'interior de l'estructura. Només tens la variable nom, el nom de la propietat, i assignar un valor específic a la mateixa. I cridar a un mètode és molt similar. El cridar a un mètode és bàsicament el que parlo per trucar a qualsevol mètode en Objective C. Estàs passant un objecte, en aquest cas serà Mycat, i estàs passant el nom del mètode. Com si vostè està parlant amb l'objecte, Mycat, que vostè ha miolar. És bastant interessant. Després d'això, hi ha una patró de disseny més essencial que hem de parlar abans d'arribar al codi real S. Aquest patró de disseny es diu esdeveniment impulsat programació. Això és també, probablement, un dels més idees fonamentals en la programació iOS. Així que probablement no saps què és exactament és la programació orientada a esdeveniments, però en realitat no és que fa por. Doncs en efecte, vostè té ha fet això abans. Aquesta és una de les línies del que has ja s'ha escrit en els últims [inaudible] de CS50, google.maps.event.addListener (marcador, "Clic", function () {}):. En trucar a aquesta línia són essencialment dient l'ordinador que sempre que l'esdeveniment anomenat "Clic" que passa en el marcador, utilitzar aquesta funció. Això és molt diferent de el que fas en mario.c. En mario.c que acaba d'executar el programa una vegada, li dóna una sortida, i ja està. Són una mena un els programes de tir. Programes per esdeveniments són molt, molt diferent. Imaginem, si Facebook és un un programa de tir que no és molt bo. Vostè acaba d'anar a Facebook una vegada que es fa. Se li dóna una sortida i mai el va recuperar. Mai tens res més. Així que aquí, sobretot el patró que utilitzem és esdeveniment impulsat, de manera que cada funció ser atrapat en base al que esdeveniment ha passat. Per exemple, si tenim un botó i especifiquem que cada vegada que es fa clic en aquest botó, truqui a la funció anomenada "Hello World!" D'aquesta manera podem realment gestionar la lògica de funcionament fluir en una forma molt flexible. L'usuari pot fer o trucar a una funció que ja ha estat cridat. És completament basat en el que fan els usuaris. Així que podem veure que es tracta de en realitat molt millor que mario.c. I una bona notícia és que és en realitat no és un concepte nou. Vostès ja ho han fet que en l'últim conjunt de problemes. Així que en Objective C hi 3 diagrames diferents per a la programació orientada a esdeveniments. El primer diagrama és anomenada acció de destinació, on s'enllaça un botó de premsa amb alguna funció. Diguem que, en fer clic a algun botó, cridar alguna funció. Aquesta és l'acció objectiu molt simple. El segon és en realitat el més difícil, es diu delegació en el protocol. Anem a explicar que en gran detall més endavant. I la tercera forma és la notificació. En realitat, això no és molt important en la mesura que a nosaltres respecta, perquè l'oportunitat que vostè va a utilitzar la notificació en el seu projecte final és força baix. Així que anem a saltar aquesta part. I anem a bussejar a la delegació en el protocol. Llavors, què és exactament un protocol? O què és exactament una delegació? Anem a parlar de protocol per començar. Els protocols són res més que fets. Però aquests esdeveniments es donen a vostè per Apple per començar. Per exemple, jo no sóc completament segur de com molts de vostès nois ús original d'Apple aplicació de correu o de contacte, però cada vegada que desplaçar-se per la taula i prémer la cel·la específica sobre la taula, que és un esdeveniment. I si vostè vol fer aquest esdeveniment per si mateix, en realitat és una mica difícil. Així que Apple ha donat que, fins i tot a vostè de manera que només pot usar directament l'esdeveniment per fer alguna cosa pel seu compte. Els protocols són en realitat molt, molt àmpliament utilitzat en Objective C. Bé en De fet, cada aplicació individual té alguna cosa atrapat aplicació delegat. Dins delicada és la totalitat de la protocols per a la càrrega de l'aplicació. Diguem que hi ha un esdeveniment d'aplicació va fer càrrega. Així que el que ha de succeir després d'haver va crear una aplicació, després d'obrir l'aplicació, després de tancar l'aplicació, o després poses l'iPhone a dormir. Aquests són tots els esdeveniments que té ja ha donat a vostè. I originalment dins d'aquestes partícules no hi haurà aplicació. Apple acaba et va dir que aquesta funció passarà quan ocorre algun esdeveniment, sinó el que fas amb això funció és totalment seva. La delegació és bàsicament dient la classe que vostè ha de manejar aquests protocols. És una mica confús, però serà molt més clara quan fem els codis de s en l'acció. Delegació en el protocol és en realitat un mecanisme molt sòlid en el sentit que si fem delegació a una classe específica, podem gestionar essencialment tot tipus d'esdeveniments utilitzant qualsevol classe que tenim, eina molt convenient. Així que un exemple ràpid per delegació en el protocol serà el que acabo de parlar. Aquest protocol específicament es diu tableview [inaudible] seleccionar paper a [? índex?] [? passat. ?] Així que aquest 1 esdeveniment que es va cridar quan realment toc en una específica cèl·lula en el seu tableview, direm al teu correu o en la seva aplicació de contactes. Dins d'una funció no havia originalment no fer res. La funció no fer res per defecte. Però vostè pot especificar el que fa la funció, tenint en compte el que vol de la seva aplicació. Eina molt convenient. I amb tot això Dit això, jo, bàsicament, cobrir una sintaxi molt bàsica i concepte fonamental per a l'objectiu C programació, i podem fer una mica de codi s. Molt més emocionant. Així codi s és en realitat un mica aclaparador quan s'obre per primer cop. Una nota ràpida, així que si vostè voler fer el desenvolupament de iOS, Jo recomanaria altament tens un Mac. Perquè fer el desenvolupament en iOS Windows és molt, molt difícil. És factible, però és molt difícil. I definitivament fa que no desitja utilitzar g d'edició. Així que en el codi de s que tenim diverses àrees diferents. La primera vegada que obris s codi veurà una àrea de navegació, que bàsicament mostra que tot el els arxius que estan en el projecte actual. Té un àrea de la barra d'eines, que és, bàsicament, la gestió de punts de vista, o alguna petita ràpida eines sobre si mateix codi s. I aquest és l'àrea real editor. Aquesta zona és molt similar g editar, però molt millor que g edició. I en aquesta àrea de la dreta, és anomenat l'àrea d'utilitat. L'àrea es torna realment útil quan crearà la interfície o especificar algunes configuracions ràpides per a la seva aplicació. I la zona final és la depuració. Aquesta àrea conté la consola. Així que quan vostè diu printf, o NSLog en el nostre cas, tots els resultats són va a imprimir aquí. Bé? Suposo que podem fer molt ràpid un exemple per a la programació iOS. I siguem realment obren s codi. Així que cada vegada que obre s codi, és apareixerà una cosa així. Es va a demanar que què és el que vols fer? Vols començar alguna cosa aleatòria, un parc infantil, bàsicament, que només pot provar codi sense realment comprometre a qualsevol aplicació. Vols crear un nou projecte? O és que vol continuar treballant en el projecte existent? En el nostre cas anem per crear un nou projecte. Així que és molt agradable, s codi de fet ja té Ha donat algunes plantilles per a la creació d'objectes. Si vostè vol fer un joc, el codi S en realitat té una plantilla de joc per a vostè, té aplicacions basats en pàgines, aplicació basada fitxa. En aquest cas, anem fer alguna cosa molt simple, i anem a utilitzar un aplicació de vista individual. Després d'això, el que vostè vol cridar el seu producte, i quin és el seu nom, Quin és el seu identificador, i ¿Quin idioma que utilitzi. Aquí no volem comprovar l'ús de dades bàsiques. Dades Bàsiques és bàsicament un databasing iOS. Si ho fa de Dades Bàsiques, s codi es definirà molt classes més complicades per a vostè. Així que per mantenir tot simple, estem només va a prescindir de Dades Bàsiques ara mateix. El problema que serem utilitzant és que-- el problema estarem creant és que ens bàsicament desitgi importar Mario de C per a una aplicació per iOS. Així que anem a trucar a que Mario-iOS. Per descomptat que especifiqui el que vol posar en el seu projecte. I aquí anem. Així que això és una mica aclaparadora, però això és en realitat el que acabem de veure en les diapositives. I la primera àrea que veiem en aquest moment és bàsicament la configuració del projecte. Així que tot el que vols fer projecte, quin tipus de dispositiu, direm quin tipus de dispositiu Vols que la teva aplicació perquè aparegui a? És l'iPhone, iPad o universal? Així que l'orientació del dispositiu, totes aquestes coses. No és molt important, però podria ser, però això és un lloc on es configura el seu projecte si en realitat desitgi implementar a la botiga d'Apple. Molt bé, anem a veure cosa que està dins del nostre codi. Anem a passar pel navegador de fitxers. I aquests són tots els arxius que ja va arribar amb la plantilla, molt agradable. Així que quan fem clic en un d'ells això és el que sembla. Molt similar a g edició. Però vostè pot veure que el ressaltat de sintaxi és probablement una mica més agradable. I és en realitat molt més poderós que l'edició g. I vostè pot completar acte un munt de coses per a tu, com veurem molt ràpidament. Anem a obrir la zona de depuració també. Molt bé, com podem veure, la consola és aquí. Això és el que vas a veure on estàs en printf o nsloging alguna cosa. Així que sense més preàmbuls, anem a realitat compilar l'aplicació i veure què passa. Una característica essencial per codi de s, és que el codi s ve amb un simulador d'iPhone. Així que vostè no necessita tenir un iPhone per tractar el seu projecte, codi de s pot fer veure que per que, com podem veure en aquest moment. És bastant agradable. Es tracta de prendre una mica poc de temps per compilar i bàsicament tenim una aplicació buida, que en realitat no fa res. Però compila. És bastant impressionant. És molt millor que C, eh? Molt bé, llavors anem a tractar d'afegir alguna cosa. Un arxiu que és una mica rar aquí es diu storyboard. Això és realment un gran, característica impressionant per al codi s. A causa de que en el codi de s, en realitat es pot arrossegar i deixar anar elements en la interfície i es mostrarà directament cap amunt. Anem a intentar-ho. Deixem caure una etiqueta aquí, "Hola Món !!!" Podem centrar això. Bastant fresc. Ara anem a córrer aquesta simulació de parada. Aquí tenim "Hola Món !!!" Ni tan sols ens fem cap tipus de codificació encara. Què diables està passant? Això és el poderós Interface Builder pot ser. Algú va arribar a dir que Probablement vostè pot tot just completar una aplicació sense escriure probablement mil línies de codi tot just usant el Interface Builder. Però és probable que no la millor manera de fer-ho. Ara anem a realment posar fil a l'codificació. Així que l'estructura de l'arxiu és realment molt interessant perquè, com vostè pot veure, hi ha hi ha una funció principal en qualsevol lloc. Veus? Com esmentem abans, es pot veure que aquesta és un arxiu d'implementació per a una classe específica. Però no hi ha cap part principal. Llavors, on és el principal? En realitat, hi ha una principal, però la principal és en realitat oculta de vostè. La principal és aquí. Això es veu molt familiar. Així que, bàsicament, el que iOS està fent dins de main és que cada vegada principal és trucada, que és bàsicament cada vegada que l'aplicació s'executa, es crea un objecte anomenat AppDelegate. Com vaig esmentar abans, la totalitat aplicació és en realitat un objecte per si mateix. Així d'aquesta manera, bàsicament el iOS està dient al compilador que bé, jo vaig a crear un producte anomenat AppDelegate, i que serà la meva aplicació. Així que cal anar a través d'aquest AppDelegate i veure el que està fent aquest tipus. El meu treball està fet per a mi. I en AppDelegate es pot veure que hi ha algunes funcions realment estranys, bé, en realitat mètodes, que Apple ja li ha donat. Què són aquests? Aquestes són en realitat només protocols que jo estava parlant. Així que aquests són esdeveniments que Apple t'ha donat per començar. No hi ha res en alguns de les funcions en aquest moment, però si volem inicialitzar alguna cosa per a la nostra aplicació abans d'entrar a mostrar qualsevol punt de vista, ho fem aquí. Vostè només pot llegir el nom i suposo l'esdeveniment és en realitat molt clara. Així que ara principal ha creat un objecte per AppDelegate. I què AppDelegate farà és en realitat també s'oculta a vostè. El AppDelegate va a començar carregar l'estoc de ViewController. Així que bàsicament va a començar carregant totes les vistes que tens i simplement fer els ulls basat en la jerarquia. Així que en aquest cas només tenim un punt de vista, que és aquí. Així que aquesta és l'única vista això serà anomenat. La lògica ViewController és aquí. Aquest és el codi que realment controla la vista que acabem de veure. Molt bé, farem alguna cosa aquí. Així viewDidLoad sona com un esdeveniment, quan en realitat això és també un delegat, això també és un protocol. Així que sigui quin sigui el punt de vista s'ha carregat, tot dins de la funció serà cridat. En aquest cas hem de veure "Hola Tianyu! "Si executeu el programa. S'està fent una mica lent compilar arxius de storyboard. Bé de fet, si veiem una sortida per a ell. És una passada. Ara anem a fer realitat Mario. Vaig a definir el funcionar molt ràpidament. marioWithLevels: resultats (int) de nivell. Molt bé, això és en realitat la increïble característica d'autocompletat de codi s. Així que quan vostè escriu per escriure i entrar, que ja ha renunciat a la plantilla per a vostè, que és bastant guai. Això hauria de mirar realment familiar per a vostès. Ho sentim, aquesta és la meva culpa. Molt bé, fresc. Aquesta lògica hauria de ser molt familiar a vostès, especialment just Mario. Però ara anem a imprimir en la consola cada vegada, perquè volem mantenir d'alguna manera pista del que estem imprimint. Anem a utilitzar el els resultats d'alguna manera més tard, per mostrar la impressió fora resultat a l'usuari. Així que en comptes només som nslogging tot, que estem emmagatzemant tot en conseqüència crida a la funció, però la lògica és exactament el mateix. Després que acabem, ens només imprimir els resultats. I aquí en lloc d'imprimir el meu nom, anem a cridar a una funció. Anem a veure què passa. Vaja, òbviament. Tenim una bonica petita piràmide aquí. Això és, bàsicament, C, només som manipulant on es crida a una funció i com no una funció similar. No hi ha res diferent. Però això és en realitat no molt emocionant aquí, perquè no estem veient res de l'aplicació per l'iPhone. Així que si vostè realment té un iPhone app-- si vostè realment té Mario iOS dret Ara, vostè no va per veure tot el que té alguna cosa a veure amb Mario perquè totes aquestes sortides en la consola s'oculten d'un usuari. Això és el que es veu, que és "Hola Món !!!" No és bo. Ara anem a tractar de fer que l'usuari vegi què és exactament el que estem imprimint. Així que no necessitem per etiquetar més. Anem a tractar d'esbrinar alguna cosa una altra cosa que pugui ser útil. En realitat, hi ha una element que es diu camp de text, el que podria ser molt útil per a nosaltres. Bàsicament mostra una regió de text que es poden editar. Així que sembla realment útil. Ara anem a arrossegueu i deixeu-lo anar. Wow, tenim una vista de text en la nostra opinió, realment de luxe. Això és una mica massa gran. Anem a fer-lo més petit. Poseu al centre. Fer-la més petita també. Ara tenim una vista de text, que vam poder pot utilitzar per mostrar el nostre resultat final. Però en aquest moment és definitivament no funcionarà perquè hi ha no-- la ViewController acabem definit no sap que hi ha una vista de text que hi ha. Així que tenim que d'alguna manera vincular la vista de text que acabem de creat amb la classe que ja ha vingut amb nosaltres. La forma de fer-ho és realment realment màgic. Doncs obre storyboard. Hi ha una especial [inaudible] anomenat [? assistent?] [inaudible]. En fer clic en això, és va a obrir dos arxius. Una d'elles és una classe i l'altra és una vista corresponent per a això. És molt, molt útil. I anem a passa per l'arxiu .h. De control, això és [inaudible] lògica. Premi Control i arrossegament la vista de text en la declaració. Anem a trucar a aquest outputView. Connecteu. Així que aquí hem declarat una nova propietat per a la nostra classe ViewController. I la nova propietat és només la vista de text hem creat a l'edifici de la interfície. Així que d'aquesta manera poguéssim l'accés de totes les dades i manipular tot el que està a l'interior la vista de sortida, que és impressionant. Així que en el nostre codi real, farem alguna cosa amb ell. Així que aquesta vegada quan som com impressió el resultat final de Mario, estem en no registrar res. Vull dir que podíem mantenir la declaració de registre. A més d'això, enviar la lectura que acabem de creat a la vista de sortida, la qual és una interfície d'usuari TextView que acabem de crear. Ara anem a veure què passa. Guauu. Tenim una piràmide en l'aplicació en aquest moment. Així l'usuari pot veure la nostra producció perquè hem copiat la sortida del nostre codi a la nostra interfície. És bastant bo. En realitat no és que emocionant perquè ens can-- Tota l'aplicació està fent és mostrant una piràmide per a vostè, i no hi ha res que puguis fer al respecte. No és particularment emocionant. Així que ara farem un botó que aclarirà les vistes. Sembla que un botó serà útil. Arrossegueu i deixeu anar. Botó un. Botó 02:00. Així que quan fem clic a l'esquerra botó, la vista ha de desaparèixer. No ha d'haver res a la pantalla. I quan fem clic al botó dret, Mario, la vista es va a aparèixer de nou. Així d'aquesta manera també fem el coses màgiques, control i arrossegament a la declaració de la classe en l'assistent La directora del en l'assistent d'espectador. En aquest cas estem especificant que això hauria de ser una acció. clearMario. Així que aquí ja hem creat una acció anomenada clearMario, que és el mètode que es diu cada vegada que premem el botó d'esborrat. Així que en la nostra realitat codi, anem a posar el text de sortida i la vista de sortida en res, i d'aquesta manera s'assembla ser clara. A més d'això, crearem altre mètode anomenat runMario. Oh, ho sento, això no ha de ser una propietat. Molt bé, que hauria ser una acció així. I quan aquesta funció és trucada, simplement correm Mario deu. Esperem que estarà bé. Es compilar? Sí. Ara tenim una visió. Tenim una sortida. I anem a veure què passa. Que s'ha anat. És tornar de nou. Així que aquí hem especificat quin tipus de funció serà cridat quan teclegem en alguna cosa, quan pressionem un botó específic. Aquesta és bàsicament la esquema d'acció de destinació per a l'esdeveniment impulsat programació en Objective C. A més d'això, que no és molt emocionant perquè no podem realment canviar què tan alt serà la piràmide, així que probablement volem d'alguna manera obtenir una entrada de l'usuari i canviar l'alçada de la piràmide basa en el que la sortida. Així que farem això. Així que aquesta vegada quan diem runMario, no ens limitem a una crida Mario directament. El títol d'aquest un. Delegat. Això és molt interessant. Què és un delegat? Em vaig a posar un mateix aquí. I anem a veure el que significa això més tard. Així que aquí hem creat bàsicament un instància específica crida un avís d'UI punt de vista. Una vista d'alerta interfície d'usuari és bàsicament el que vulguis veure cada vegada que alguna cosa pops i li pregunta per a l'entrada, com el que passarà quan vostè està tractant per comprar alguna cosa en una botiga d'aplicacions. A més d'això, després de crear-lo, només mostrem l'alerta. Molt bé, anem a ràpidament prova de la voluntat que el treball o no. Això és molt cool. Ara crearem una realitat camp d'entrada per alerta de la interfície d'usuari. Així és com ho fem. I hem de tenir un vista d'entrada per l'alerta. Molt fresc. Diguem 10. No està fent res bé ara perquè l'anomenada realitat no va canviar per executar Mario. Així que això s'ha convertit en una mica mica estrany perquè sempre premem un botó de sota, cada vegada que premi un botó a la vista d'alerta, alguna cosa passa, però no succeeix. Com ens atrapem això? Com sabem que un usuari ha desestimat una vista d'alertes i ja entrat en un nombre, perquè en aquest moment res està succeint realment. Bé, pot haver endevinat bé, delegació. Així que a més de tot aquestes declaracions, hem d'afegir una nova delegació a es diu IU alerta de delegat. Així que cada interacció o esdeveniment que tindrem amb la vista alerta UI serà manejat per la nostra classe també. Així que a més d'això, serà alerta botó Veure Fes click en l'índex. Això s'aconsegueix. Així que en aquest cas tenim ya-- així que tenim trobat a terme un protocol que controlarà l'esdeveniment quan fem clic al botó Fet a la vista d'alerta. Així que cada vegada que desestimi el vista alerta, això ha de succeir. Permetin-me provo molt ràpidament. Ben fet, hem arribat aquí. Així que aquí, el que no ho farà aconseguir realment és en realitat obtenim ell-- Així que volem sortir el text que tenim prèviament va ingressar a la vista d'alerta. I basat en text, estem va a mostrar Mario. Això resulta molt ràpidament si realment funciona o no. Així que en aquest cas, si d'entrada, diguem, 10, hauríem veure 10. Molt bé, tenim un nombre aquí. És bastant bo. Ara l'últim pas serà ser: Així que la últim pas que hem de fer en aquest moment és només una trucada de Mario amb nivell basat a l'entrada que hem posat a la vista d'alerta. Així que hem de convertir aquesta cadena en iOS. Desbordament estàtica és molt impressionant. I després ja només en diem acte valor marioWithLevels. Anem a veure que va a realment funciona o no. Ja estem van donar una piràmide. Anem a tractar de canviar l'altura. Que realment funciona. És una passada. Així que ara vostè pot simplement introduir qualsevol valor que vulgueu. Diguem 04:00. Això és bastant impressionant. Així que això és bàsicament un exemple molt ràpid com crear un projecte en codi de s i com cablejar molt ràpidament alguns esdeveniments i funcions molt simples. Així la font va per ser posat en línia més tard. Així que si vostè està interessat en com funciona iOS Mario, Vaig a posar exactament el mateix projectes en el lloc web CS50 tard. Bàsicament estem acabat amb la estiu, i abans d'acabar Només vull assenyalar a vostès a alguns recursos realment impressionants que estan disponibles en línia. Òbviament, la documentació d'Apple serà molt útil. Però a més d'això, especialment recomanar quatre fonts, escola de codi, casa de l'arbre, AppCoda i WWDC vídeos. Codi del col·legi i de la casa de l'arbre són dos llocs web Educadores en línia, que se centren específicament en enginyeria de programari. Especialment per a l'escola codi, que tenen molt bon tutorial sobre iOS. Aquest és un exemple molt ràpid per a ell. Ells en realitat creen una realitat cute-- mira que poc iPhone valent amic d'allà, que és bastant impressionant. I la forma en què explica Objectiu Sintaxi de C és perfectament clara. La casa de l'arbre és el mateix. I AppCoda és un fòrum. En realitat és un bloc que es va executar per un objectiu molt experimentat C programador. I tots aquests tutorials en AppCoda són bastant curt i fàcil d'implementar, molt recomanable. I si vostè és un desenvolupador, Definitivament anar a veure com els vídeos WWDC on es pot aprendre sobre l'última programació iOS tècniques, APIs i biblioteques. Així que és més o menys durant el seminari. Moltes gràcies. I jo espero que es diverteixin la creació de la seva pròpia aplicació per iOS.