Tianyu Liu: Ei, como é que vai todo o mundo? E este é o IOS App Programación do obxectivo c seminario. E meu nome é Tianyu Liu. Eu son un Júnior Lowell agora, concentrando-se en ciencia da computación. Polo tanto, neste seminario que eu son vai ensinar a vostedes un pouco sobre como facer un app. Yay, estar animado para el. Así, antes de comezar o mergullo ao lado de programación real, imos falar sobre moi rapidamente por que pode querer construír un app IOS? Por que é tan incrible IOS? Así, o primeiro problema, o primeiro cousa que é moi legal para nós, especialmente como un CS50 estudante, é que IOS usa Objective C. Así, hai unha nova linguaxe chamada Swift, pero nós non imos usar que neste seminario. Se vostede está interesado en Swift, hai é un seminario independente sobre iso. Pero Objective C é basicamente un super conxunto de C. Significado que todo o que se pode usar en C traducirse en Objective C moi facilmente. Como verás máis tarde, que en realidade hai algunha sintaxe moi básico, son basicamente exactamente o mesmo, C e Objective C. Entón, sempre que teña tomado CS50 -Se até aquí, xa Obxectivo sabe C, polo menos o 40%. Ademais, Apple ten un realmente API robusto para IOS. Hai unha morea de moi tolo cousas que podes facer con el. Un dos cales é alguén realmente creou un app IOS para coches de control, que é bastante interesante. Probablemente, un helicóptero é máis emocionante. Pero iso é o quão poderoso API IOS se pode. E como pode ter descubrín agora, o estourido de pila é probablemente un dos os máis importantes recursos en liña dispoñible para ti. E unha boa nova, para cada único problema que pode, posiblemente, pensar ao construír o seu proxecto final en Objective C, é probable que exista unha resposta de estourido de pila. É simplemente fantástico. Ademais de que, IOS é realmente unha plataforma onde pode chegar a unha enorme audiencia con pouco esforzo. Non é como Android, onde está todo moi fragmentado. Todo IOS é unificado. E mentres se crea unha aplicación para o iPhone, Pode facilmente porta que para iPad, iPad mini, ou de diferentes tamaños para iPhone. Estes son todos realmente cómodo. E é realmente moi bo para impresionar os seus amigos. Pode só realizar un iPhone e di ao seu amigo hey, este é a aplicación que fago. Podes facelo por calquera aplicacións de escritorio, que é bo. Todo ben, agora imos realmente comezar na linguaxe Objective C. Entón, por que non comezar con algunha sintaxe moi básico. Como mencionei antes Obxectivo C É basicamente un super conxunto de C. Entón, unha morea de sintaxe básica son en realidade, exactamente o mesmo. Declarando unha variable e adición de dúas variables en conxunto é exactamente como fixemos no Mario. Nada novo aquí. Do mesmo xeito, o inquilino é loop e condición tamén é o mesmo. Pode facer un loop, así como xa fixo nun Mario [inaudível]. E pode facer condicións así como o que veñen facendo nos seus sets p anteriores. Con todo, Objective C non é completamente C, e non é algo que é unha especie de estraño niso. A primeira delas é que cando está facendo programación C, que normalmente chamamos incluír e, a continuación, un nome de biblioteca. Pero en Objective C chama iso de importación. Basicamente dicindo funcionalidade, só nomes distintos. E as cordas son en realidade, un pouco raro. Podes ver que o primeiro cousa que é medio raro é que ten unha fermosa weird-- sorry-- tes NS moi raro asinar aquí. E a segunda cousa iso é medio raro se ten unha arroba antes en realidade, declarando a cadea. Así, o sinal de arroba basicamente significa que unha corda non é só unha corda, en realidade é un obxecto. Nós imos explicar que máis tarde, non facer pánico se non o fai comprender o que iso significa. E a impresión para a consola é un pouco diferente, porque en C chamamos printf, pero en Objective C chamamos [inaudível]. Podes estar se pregunta o que é iso. Isto é, basicamente, printf, só un idioma diferente. Exactamente o mesmo uso, exactamente a mesma funcionalidade. Ben, resulta que Objective C, en realidade, ten un prefixo ns en case todo, todo tipo de datos básicos, NSString, NSArray, NSDictionary. A razón é que ns realmente significa Next Step, que é unha empresa que Steve Jobs fundou, que é unha empresa en que o linguaxe Objective C nace. Polo tanto, esta é basicamente a tradición. Sei que é un pouco estraño, pero é Apple. Entón, algo que é aínda máis estraño que iso é unha declaración de función. Iso é moi diferente do que nós ver en C, porque aquí, en realidade, non se parece C anymore. O que ten aqui-- polo forma en que este non é un punto de bala, este é un sinal de menos. Ten un paréntese signo menos baleiro e, a continuación, o nome da función. Nós só dicir que se nós Ola mundo ten, entón o tipo de retorno sería nula porque devolver nada. O que queda realmente estraño é que cando está Tendo máis que un parámetro pasando a unha mesma función que vai ser moi raro, como se mostra aquí. Temos un nome do método, addInt chamado para [inaudível] e estamos pasando un parámetro. Pero despois diso, temos máis chamada nome do método con. E despois co que estamos pasando o segundo parámetro. Este é realmente un pouco raro, pero todas estas declaracións de función seguen o mesmo patrón como este. Temos un sinal de menos para comezar. O signo negativo pode ser un sinal de máis ás veces con base en que tipo de método é iso. Método é basicamente outro nome para a función. E nós imos explican que máis tarde, cando estamos a falar de obxecto programación orientada. Primeiro especificar o retorno escriba parénteses dentro, tras o cal vén o nome do método. Está pasando un parámetro. E se ten máis parámetros cómpre estender o nome do método e, basicamente, escribir algo máis aquí. Podería ser calquera cousa que sexa. No noso caso, é con. Pero podería dicir final, ou, ou, ou abc bar completo, o que quere. E, despois de que se pasando parámetro b. Este é realmente un estraño convención, pero estamos vai ver por que Apple quería para facelo moi rapidamente. Entón, como chamar a función? Chamar unha función en Objective C tamén é diferente da C. De feito, chamar un función en Objective C é máis como se está falando con alguén. Aquí temos auto, que chámase un obxecto. Está basicamente dicindo a obxecto de auto de dicir "Ola Mundo!" Esa é a forma de chamar a función. Un obxecto e un nome de método combinadas entre si. E é aí que a extensión estraño para o nome do método realmente entra en xogo. Imos ollar para o segundo exemplo. Nós acabamos de definir un método chamado addInt con bla bla bla. Polo tanto, neste caso, cando está chamando que [específico? mensaxe?] que vai para ollar como auto addInt: 10 en: 2. Parece Inglés. Aínda que a función declaración de función é estraño, Desde o punto de C do Obxectivo método estándar de declaración, é que cando está chamando a función ou método vai soar como o inglés real. Polo tanto, é moi intuitivo unha vez que se acostuma. Especialmente neste caso, onde pode basicamente ver que o nome da función é tipo de documentación de si mesmo. Non precisa de ningún máis explicación para ver o que exactamente está a suceder, o que exactamente un parámetro facendo. Indo alén diso, imos falar un pouco pouco sobre programación orientada a obxecto. Programación orientada a obxecto é un dos fundamental de programación técnicas ou patróns que é usado por Objective C. Objective C chámase Obxectivo C, non C, por unha razón moi boa. Entón, antes de entrar Sintaxe Objective C, Imos realmente rápido ollar para o que é exactamente un obxecto. Nós probablemente teña feito algo como obxecto antes, que chámase struct cando está implantación dunha árbore ou unha lista ligada ou [? probar. ?] Entón, é basicamente como un struct, pero é moito máis poderoso do que iso. Un obxecto ten métodos e propiedades. Os métodos son basicamente funcións. Basicamente funciona que un específico para un determinado obxecto. E as propiedades son basicamente os campo que se especifica no struct. Así, para cada obxecto temos algunha propiedade que ten algunhas variables que son específicos para o obxecto. E nós temos algunhas funcións que tamén son específicas para o obxecto. E as funcións son chamadas de métodos e as variables son chamadas de propiedades. É só un nome fantasía. Mentres feito, cada visión única ve mentres abre un app IOS, imos só dicir que Twitter ou Facebook, cada única visión que ve é un obxecto. E aínda todo o app é un obxecto para comezar. Concepto moi interesante. E por que queremos obxecto programación orientada? Entón podes imaxinar que cando programa pasa a ser bastante complicado. Nós só dicir que cando está implantación de taboleiro de xadrez, a lóxica vai ser realmente complicado. Ten 36 diferentes pezas, de forma que se quero escribir lóxica para todos 36 pezas diferentes en xadrez, que vai ser unha morea de distintas funcións e variables. É unha morea de problemas. E, probabelmente, vai escribir método diferente ou función diferente para cada unha das pezas de exactamente controlar o que eles fan. Pero se fai orientada a obxecto programación, todas estas pezas pode ser resumido en un único obxecto. E o obxecto terá algunha común propiedades, como o tipo de peza é iso? Cal é a cor? Como é que pode moverse? E desta forma ten moito simplificar a lóxica do mesmo. Entón é só unha boa forma para facer programas complicados, e relación xerárquica dentro do programa, moi sinxelo. Como veremos por iso moi rapidamente cando en realidade estamos facendo programming-- cando estamos realmente facendo un código S programación sesión máis tarde. Ben ademais de que, programación orientada a obxecto é só unha morea de diversión. Ten que crear o seu propio obxecto. Ten que proxectar o que fai Lo parecido contigo mesmo. Non hai resposta correcta para iso. E é totalmente interesante. Así, en programación orientada a obxectos, dous conceptos fundamentais será de clase e instancia. A clase é basicamente un modelo de obxecto. E un exemplo é basicamente un obxecto específico. Nós só dicir que está facendo unha cookie. Neste caso, cada cookie que realmente acabar con vai ser un obxecto. Pero a tarxeta de cookie que usa para asar todas as cookies serán unha clase. A clase é basicamente un modelo. E o exemplo será un específico obxecto creado a partir desa clase. E unha instancia será creada con base na declaración de clase, como veremos en láminas posteriores. Entón imos realmente fan un exemplo rápido [inaudível]. Imos dicir que estamos declarando un obxecto para un gato. O obxecto debe have-- a clase gato debe ten algunhas propiedades e métodos. Que tipo de propiedades deben os clase have-- debe o gato ten? Por exemplo, a cor, idade e raza, os variables que serán son específicos para cada gato. E estas son algunhas cousas que usan para describir un gato. Que tipo de método, ou o que pode facer un gato? Algúns exemplos rápidos sería persecución rato, comer peixe ou só miar. Este é realmente un rápido exemplo de clase gato. E realmente un específico cat obxecto será un gato onde se especifique o cor, idade e raza. Nese caso, o noso obxectivo é xa non unha clase máis. Nós copiar o modelo de clase e especificamos cada información específica para ese obxecto específico para facelo independente. E cando está chamando un método dentro dun obxecto, acaba de chamar Meow sobre o obxecto, que é o gato que acaba de crear. Probablemente ha imprimir algo así como "Ola Mundo! Miau. " Moi bonito. Todo ben, imos só entrar nalgúns detalles e ver o que fai exactamente ese traducir-se en estar programación IOS. Así, en iOS programando cada clase aplicarase en dous arquivos. Un arquivo é aquí, que está chamado a interface. Outro ficheiro é aquí, que chámase execución. Polo xeral a interfaz terá extension.h como vimos en bibliotecas C. E ficheiro de implementación é terá extension.n. É unha especie de estraño. Pero .n significa, en realidade, .c, non hai diferenza fundamental entre os dous. Polo tanto, neste caso, podemos ver que somos declarando interface, Cat: obxecto. Iso é chamado de herdanza. Estamos, basicamente, herdando a clase gato da clase de obxecto. Así, cada propiedade e método que era previamente definido na clase de obxecto será automaticamente definido nunha clase gato tamén. Ademais, defínese a cor, raza e idade, tres variables. Isto realmente parece algo que fixo antes. Parece que struct. Isto é, basicamente, a sintaxe para declaración struct, e que é totalmente correcta. E dende que eu mencionei antes, a diferenza que un struct e un obxecto, un dos diferenzas fundamentais é un obxecto que ten método, mentres que só ten unha estrutura variables. Así, en adición ás propiedades ou variables que creamos para o obxecto, especificamos algún método. Nós só dicir que temos aquí dous métodos, un é Meow, outra é rato persecución. Nós probablemente vai querer estar pasando un parámetro con base no noso método anterior patrón de declaración. Probablemente vai querer estar pasando un rato. E probablemente vai querer para voltar un significante bool Se o gato ten correctamente colleu o rato ou non. Esta é a interface, pero podemos ver que a interface realmente non fai nada. El só di un programa que exists-- o que hai na clase gato. Así, para que o programa para facer algo, necesitamos ter arquivos de implementación. Entón, aquí, o primeiro que facemos é obviamente, nos importan a interface. Tras descargar o interfaz, defínese o método. Nós só dicir que aquí Miau sería só imprimir "Ola Mundo!" para a consola. E despois da implantación arquivo, que está moi ben feito. Esta é basicamente unha clase declaración dunha clase. Entón, agora a cuestión tórnase, Como declarar unha variable? O xeito no que usa unha clase para crear unha obxecto en Objective C está escrito aquí. Primeiro especificar que este é un punteiro gato, porque cada obxecto en Objective C finalmente é aplicado como un punteiro. E chamar a clase, chamalos como distribución, que é basicamente malloc, dicindo que o sistema operativo que necesita dalgún espazo de memoria para este obxecto. Despois que ten un obxecto xa e só Inicialize-o. Esta é só unha convención. Sei que é un pouco raro, pero este é, en realidade, como Apple fai cousas. Asignación de propiedades é en realidade, moi sinxelo. É moi semellante ao o que está facendo cando está atribuíndo algúns específicos campo dentro struct. Só ten a variable nome, o nome da propiedade, e asignar un valor específico a el. E chamando un método é moi semellante. A chamada dun método é basicamente o que eu falo sobre para chamar calquera método en Objective C. Está pasando un obxecto, en Neste caso, será myCat, e está pasando o nome do método. Como se está falando para o obxecto, myCat, que ten que miar. É moi interesante. Despois diso, hai un patrón de deseño máis esencial que necesitamos falar sobre antes de chegar ao código S real. Este patrón de deseño é chamado evento dirixido programación. Isto tamén é, probablemente, un dos máis ideas fundamentais na programación IOS. Entón probablemente non sabe o que é exactamente é a programación do evento conducido, pero non é realmente tan asustado. Ben, en realidade, ten xa fixen iso antes. Esta é unha das liñas que probablemente xa escrito na última [inaudível] de CS50, google.maps.event.addListener (marcador, "Prema", function () {}):. Ao chamar esta liña que está esencialmente dicindo ao ordenador que sempre que o evento de chamada "Click" acontece no marcador, usar esta función. Isto é moi diferente o que fai en mario.c. En mario.c basta con executar o programa unha vez máis, dálle unha saída, e está feito. Trátase de unha especie de como un programas de tiro. Programas dirixidos por eventos son moi, moi diferente. Imos imaxinar que, se o Facebook é un programa de tiro non é realmente bo. Acaba de ir ao Facebook unha vez e está feito. Dálle algunha saída e nunca logralo de volta. Vostede non ten nada de máis. Entón, aquí, especialmente o estándar que usan é evento dirixido, de modo que Cada función ser pego con base no que evento que pasou. Por exemplo, se temos un botón e nós especificamos que sempre que o botón é premendo, chamar a función chamada "Ola Mundo!" Desta forma podemos realmente xestionar a lóxica función fluír dun xeito moi flexible. O usuario pode facer ou chamar unha función que xa foi chamado. É completamente baseado en que os usuarios fan. Así, podemos ver que este é en realidade, moito mellor que mario.c. E boa noticia é que é en realidade, non é un concepto novo. Vós xa fixeron que no último conxunto de problemas. Así, en Objective C existen tres diagramas diferentes para evento dirixido programación. O primeiro diagrama é chamou a acción de destino, onde conectar un botón prensa con algunha función. Nós só dicir que, sempre que premer algún botón, chamar algunha función. Isto é moi simple acción de destino. O segundo é en realidade, o máis difícil, el chámase delegación no protocolo. Nós imos explicar que en gran detalle máis tarde. E a terceira vía é a notificación. Este non é, en realidade moi importante no que se como nós estamos preocupados, porque a oportunidade que está indo a usar notificación no seu proxecto final é moi baixo. Entón, imos saltar esa parte. E nós estamos indo a mergullo en delegación no protocolo. Entón, o que é exactamente un protocolo? Ou o que é exactamente unha delegación? Imos falar sobre o protocolo para comezar. Os protocolos son somente eventos. Pero estes eventos se dan aos vostede por Apple para comezar. Por exemplo, eu non son completamente seguro cantos de vós caras uso orixinal de Apple correo aplicación ou contacto, pero cada vez que se despraza a táboa e prema a célula específica enriba da mesa, que é un evento. E se quere facer ese evento por si mesmo, en realidade é un pouco difícil. Así, Apple deu que, mesmo para ti de modo que pode só usar directamente o evento para facer algo no seu propio país. Os protocolos son, en realidade, realmente, realmente moi utilizado en Objective C. Así en verdade, cada app único ten algo chamou app delegado. Dentro delicado é de todo protocolos para cargar o app. Nós só dicir que hai un evento para o app fixo carga. Entón, o que debe ocorrer despois que creou unha aplicación, tras abrir o app, despois de pechar a aplicación, ou despois pór o iPhone para durmir. Estes son todos os eventos que posúe xa foi dado a ti. E orixinalmente dentro destas partículas haberá ningunha implementación. Apple acaba de lle dixo que esta función ocorrerá cando ocorrer algún evento, pero o que fai que función é completamente ata. Delegación é basicamente dicindo a clase que ten que tratar con estes protocolos. É un pouco confusa, pero será moito máis clara cando facemos os códigos s en acción. Delegación de protocolo é realmente un mecanismo moi robusto no sentido que se facemos delegación para unha clase específica, podemos esencialmente xestionar todo tipo de eventos usando calquera clase que temos, ferramenta moi cómodo. Entón, un exemplo rápido para delegación no protocolo será que eu acabo de falar. Este protocolo é chamado especificamente tableview [inaudível] seleccionar papel no [? índice?] [? pasado. ?] Por tanto, este un evento que sería pego cando realmente tocar nun específico célula do seu tableview, imos só dicir que no seu correo electrónico ou na súa aplicación de contactos. Dentro dunha función había orixinalmente non facer nada. A función non fai facer algo por defecto. Pero pode especificar que a función fai, dado o que quere da súa aplicación. Unha ferramenta moi cómodo. E con todo isto Dito isto, eu basicamente cubrir algunha sintaxe moi básico e concepto fundamental para Objective C programación, e podemos facer un código s. Moito máis emocionante. Así s código é realmente un pouco esmagadora cando abri-lo por primeira vez. Unha nota rápida, por iso, se quere facer o desenvolvemento IOS, Eu recomendo que ten un Mac. Porque facendo o desenvolvemento IOS en Windows é moi, moi difícil. É factible, pero é realmente difícil. E definitivamente non quere usar g edición. Así, en s código temos varias áreas diferentes. Cando se abre por primeira vez s código verás unha área de navegación, que basicamente mostra toda a arquivos que está no seu proxecto actual. Ten unha superficie de barra de ferramentas, que é basicamente xestionar puntos de vista, ou algún pequeno e rápido ferramentas preto s propio código. E esta é a área real editor. Esta área é moi semellante g editar, pero moito mellor que g edición. E nesta área do dereito, é chamada a área de utilidade. A área se fai realmente útil cando está creando interface ou especificando algunhas opcións rápidas para o seu app. E a área final é a depuración. Esta área contén a consola. Así, sempre que di printf, ou NSLog no noso caso, todos os seus resultados son será impreso aquí. Todo certo? Eu creo que podemos realmente facer rapidamente un exemplo para a programación IOS. E imos realmente abrir código-se s. Entón, cada vez que abrir o código-se s, é aparecerá algo parecido. El lle vai preguntar o que quere facer? Quere comezar algo chou, un parque infantil, basicamente pode só probar o código sen realmente se comprometer con calquera app. Quere crear un novo proxecto? Ou quere continuar traballando no proxecto existente? No noso caso, imos para crear un novo proxecto. Por iso é moi bo, s código de feito xa ten -lle dado algúns modelos para a creación de obxectos. Se queres facer un xogo, o Código en realidade, ten un modelo de xogo para ti, ten aplicacións de páxina con base, aplicación baseada en pestanas. Neste caso, imos para facer algo moi sinxelo, e nós estamos indo a usar un aplicación visión única. Despois diso, só o que quere chamá- seu produto, e cal é o seu nome, cal é o seu identificador, e o que a linguaxe que usa. Aquí nós non queremos vaia utilizar o Data Core. Core Data é basicamente un databasing IOS. Se fai o Core Data, s código definirá un lote clases máis complicado para ti. Polo tanto, para manter todo simple, estamos só vou facer sen Core Data agora mesmo. O problema que será usar é isso-- o problema estaremos creando é que nós basicamente quere importar Mario de C a un app IOS. Entón, imos chamar iso de Mario-IOS. Claro que se especifica o que quere poñer no seu proxecto. E alí imos nós. Polo tanto, este é un pouco esmagadora, pero esta é realmente o que acabamos de ver nos diapositivas. E a primeira área, vemos agora é basicamente configuración do proxecto. Entón, todo o que quere facer proxecto, que tipo de dispositivo, imos só dicir que tipo de dispositivo quere o seu app para aparecer? É iPhone, iPad ou universal? Así, a orientación do dispositivo, todas esas cousas. Non é moi importante, pero podería ser, pero esta É un lugar onde configura seu proxecto, se realmente quere implantar a tenda de Apple. Todo ben, imos ollar para algo que está dentro do noso código. Imos percorrer o navegador de ficheiros. E estes son todos os ficheiros que xa veu co modelo, moi agradable. Entón, cando nós clic nun deles iso é o que parece. Moi semellante ao g edición. Pero podes ver que a destaque de sintaxe é, probablemente, un pouco máis agradable. E é realmente moito máis poderoso do que g edición. E pode auto completa unha morea de cousas para ti, como veremos moi rapidamente. Imos abrir a área de depuración tamén. Todo ben, como podemos ver, a consola está ben aquí. Isto é o que vai ver onde está printf ou nsloging algo. Así, sen máis delongas, imos realmente compilar a aplicación e ver que pasa. Unha característica esencial para s código, é que s código ven con un simulador de iPhone. Así que non ter un iPhone para probar o seu proxecto, s código pode simular que, para vostede, como podemos ver no momento. É moi bo. Está tardando un pouco pouco de tempo para compilar e, basicamente, temos unha aplicación baleiro, que en realidade non fai nada. Pero compila. É bastante impresionante. É moito mellor que C, hein? Todo ben, entón imos tentar engadir algo. Un arquivo que é un pouco estraño aquí chámase storyboard. Este é realmente un gran, característica impresionante para s código. Porque en s código, pode realmente arrastrar e soltar elementos no interfaz e vai amosar directamente cara arriba. Imos tentar que. Nós deixamos caer unha etiqueta aquí, "Ola mundo !!!" Podemos centralizar iso. Moi legal. Agora imos realizar esta simulación stop. Aquí temos "Ola mundo !!!" Nós nin sequera facer calquera codificación aínda. Que diaños está a suceder? Este é o quão poderoso Interface Builder pode ser. Alguén chegou a dicir que Probablemente, pode só completar un app sen escribir probablemente mil liñas de código só usando a interface build. Pero probablemente non é o mellor xeito de facelo. Agora imos realmente comezar a codificación. Así, a estrutura do ficheiro é realmente moi interesante porque, como se pode ver, hai ningunha función principal en calquera lugar. Vexa? Como mencionamos anteriormente, verás que esta é un ficheiro de implementación para unha clase específica. Pero non hai ningún lugar principal. Entón, onde é o principal? De feito, hai un principal, pero o principal é, en realidade, agochada de vós. O principal é aquí. Isto parece familiar. Entón, basicamente o IOS está facendo dentro principal é que, sempre que é principal chamado, que é basicamente sempre que a aplicación é executado, el crea un obxecto chamado AppDelegate. Como mencionei antes, a todo app é realmente un obxecto por si só. Polo tanto, desta forma, basicamente, a IOS app está dicindo o compilador que OK, eu estou indo a crear un produto chamado AppDelegate, e que vai ser o meu app. Entón, ten que ir que a través AppDelegate e ver o que este cara está facendo. O meu traballo está feito por min. E en AppDelegate verás que hai algunhas funcións realmente estraños, ben, en realidade, métodos, que Apple xa lle deu. Quen son eses? Estes son realmente só protocolos que eu estaba falando. Entón, eses son os eventos que Apple deulle para comezar. Non hai nada de algunha das funcións agora, pero se queremos arrincar algo para o noso app antes de entrar en carteleira calquera punto de vista, nós facemos iso aquí. Pode só ler o nome e eu creo que o evento é realmente moi clara. Entón, agora principal creou un obxecto para AppDelegate. E o que AppDelegate fará é, en realidade, tamén oculto de ti. O AppDelegate comezará a carga do stock ViewController. Entón, é basicamente comezará a carga de todos os puntos de vista que ten e só procesar a visión con base na xerarquía. Polo tanto, neste caso, só temos un punto de vista, o que está aquí. Entón, esa é a única vista que vai ser chamado. A lóxica ViewController está ben aquí. Este é o código que realmente controla o punto de vista que acabamos de ver. Todo ben, imos facer algo aquí. Entón viewDidLoad soa como un evento, cando en realidade este é tamén un delegado, este é tamén un protocolo. Así, calquera que sexa o punto de vista é cargado, todo dentro da función chamarase. Neste caso, hai que ver "Ola Tianyu! "Se executar o programa. Está quedando un pouco lento a compilación dos ficheiros storyboard. Ben, en realidade, nós vemos unha saída para el. É moi legal. Agora imos realmente facer Mario. Eu estou indo a definir o funcionar moi rapidamente. marioWithLevels: Resultados (int) nivel. Todo ben, este é realmente o impresionante recurso de s código de auto realización. Entón, cando escribe para e escriba entrar, el xa desistiu do modelo para ti, o que é moi legal. Isto debe ollar realmente familiar para vós. Sentímolo, iso é culpa miña. Todo ben, legal. Esa lóxica que mirar moi familiar para vós, especialmente só Mario. Pero agora imos imprimir a a consola en cada momento, porque queremos manter dalgún xeito a par do que estamos imprimindo. Nós imos empregar o resulta de algunha maneira, máis tarde, para amosar a impresión a producir para o usuario. Entón, en vez, somos só nslogging todo, que estamos almacenando todo nun resultado chamada de función, pero a lóxica é exactamente o mesmo. Despois que rematar, nós pode imprimir os nosos resultados. E aquí en vez de imprimir o meu nome, imos chamar unha función. Imos ver que pasa. Oops, obviamente. Temos un bo pouco pirámide aquí fóra. Este é basicamente C, somos só manipulación de onde chamar unha función e como é que unha función parecida. Non hai nada de diferente. Pero esta é realmente non moi emocionante aquí, porque non estamos vendo nada da aplicación para iPhone. Entón, se realmente ten un iPhone app-- se realmente ten dereito Mario iOS Agora, non vai para ver todo o que ten algo que ver con Mario porque todas aquelas saídas nun consola están escondidos dun usuario. Isto é o que ve, que é "Ola mundo !!!" Non é bo. Agora imos tratar de facer que o usuario vexa o que exactamente estamos imprimindo. Entón, nós non necesitamos rotular máis. Imos tentar descubrir algo outra cousa que poida ser útil. De feito, hai unha elemento que se chama campo de texto, o que podería ser moi útil para nós. Basicamente, exhibe unha rexión de texto que se pode editar. Así que parece realmente útil. Agora imos arrastralo lo e soltalo. Guau, temos unha visión de texto a noso ver, moi chique. Isto é un pouco grande de máis. Imos facelo menor. Poñelas ao centro. Facelo menor tamén. Agora temos unha vista de texto, o que poderiamos pode empregar para mostrar o noso resultado final. Pero agora é definitivamente non vai funcionar porque non é o Não-- ViewController acabamos definido non sabe que hai unha exhibición de texto por aí. Entón, necesitamos de algunha maneira conectar a exhibición de texto que acabamos creado coa clase que xa veu coa xente. A nosa forma de facelo é en realidade, realmente máxico. Entón abra storyboard. Hai un especial [inaudível] chamado [? asistente?] [inaudível]. Cando fai clic en que, se abrirá dous arquivos. Un deles é unha clase e outra é unha vista que corresponde para iso. É moi, moi útil. E imos só atravesa o ficheiro .h. Control, este é [inaudível] a lóxica. Prema a tecla Control e arrastra o exhibición de texto para a declaración. Imos chamar ese outputView. Póñase-se. Entón, aquí temos declarado un novo propiedade para a nosa clase ViewController. E a nova propiedade é só o punto de vista de texto creamos no edificio interface. Entón, desta forma poderíamos o acceso de todos os datos e manipular todo o que está dentro o punto de vista de produción, que é incrible. Así, no noso código actual, imos facer algo con el. Entón, neste momento en que somos como impresión o resultado final para Mario, estamos en non rexistrando nada. Quero dicir que podería manter a declaración de rexistro. Ademais, nós enviar a lectura que acabamos creado para a visualización de saída, que é unha UI textview que acabamos de crear. Agora imos ver que pasa. Guau. Temos unha pirámide no app agora. Así, o usuario pode ver a nosa saída, pois copiamos a saída do noso código para a nosa interface. É moi bo. En realidade non é que excitante porque can-- Todo o app está facendo é mostrando unha pirámide para ti, e non hai nada que poida facer sobre iso. Non é particularmente emocionante. Entón agora imos facer un botón que borrará os puntos de vista. Parece que un botón será útil. Arrastre e solte. Un botón. Botón dous. Entón, cando eu premer á esquerda botón, a vista que limpar. Non debe haber nada na pantalla. E cando nós prema o botón dereito, Mario, a vista aparecerá de novo. Así, deste xeito tamén nós facemos o material máxico, control e arrastra á declaración de clase no asistente director-- no asistente de espectador. Neste caso, estamos especificando que esta debe ser unha acción. clearMario. Entón, aquí xa creamos unha acción chamada clearMario, que é o método que sería chamada sempre que premer o botón claro. Así, no noso código, en realidade, imos só poñer o texto de saída ea vista de saída en nada, e de que xeito vai aparecer para ser claro. Ademais, imos crear outro método chamado runMario. Oh, desculpe, iso non debe ser unha propiedade. Todo ben, que debería ser unha acción ben. E cando esa función é chamado, nós só executar Mario dez. Esperemos que isto vai estar ben. Será que compilar? Si. Agora temos unha visión. Temos unha saída. E imos ver que pasa. Isto acabou. Está de volta de novo. Polo tanto, temos aquí especificado que tipo de función ha ser chamado cando nós escribir algo, cando se presiona un botón específico. Este é basicamente o programa de acción branco para evento dirixido programación en Objective C. Ademais de que, non é moi emocionante porque non podemos realmente cambiar ; alto da pirámide será, por iso, probablemente vai querer dalgún xeito obter unha entrada do usuario e cambiar a altura do pirámide con base no que saída. Entón nós imos facelo. Entón, esta vez cando chamamos runMario, nós non só chamar Mario directamente. O título deste un. Delegado. Isto é moi interesante. ¿Que é un delegado? Vou poñer auto aquí. E veremos o que iso significa máis tarde. Entón aquí creamos basicamente un instancia específica chamada de alerta UI view. A exhibición de alerta é UI basicamente o que quere ve cada vez que algo Pops -Se e pídelle á entrada, como o que vai pasar cando estás para mercar algo nunha tenda de aplicacións. Ademais de que, despois de crealo, nós só mostrar a alerta. Todo ben, imos só rapidamente proba iso vai funcionar ou non. Iso é moi legal. Agora imos realmente crear unha campo de entrada para a alerta de UI. Esta é o xeito no que facemos isto. E temos que ter un vista de entrada para a alerta. Moi legal. Nós só dicir que 10. Non está facendo nada dereito agora, porque a chamada, en realidade, non se alterou para a execución de Mario. Polo tanto, este tornouse un pouco pouco raro porque sempre nós premer un botón para abaixo, sempre que premer un botón na pantalla de alerta, algo acontecer, pero iso non acontece. Como é que imos coller iso? Como sabemos que un usuario rexeitou unha exhibición de alerta e xa entrou nun número, porque agora nada está realmente a suceder. Ben, ten que ter difícil de adiviñar Lo dereito, a delegación. Así, ademais de todo estas declaracións, necesitamos engadir unha nova delegación de que chamou de UI vista alerta delegado. Así que cada interacción ou evento que nós imos ter coa exhibición de alerta UI vai ser tratada pola nosa clase tamén. Así, ademais de que, será botón de previsualización prema alerta no índice. Isto é alcanzar. Así, nese caso, temos já-- polo que temos descubrín un protocolo que enfrontará o evento cando prememos no botón Feito na exhibición de alerta. Entón, cada vez que dimitir o exhibición de alerta, que debe acontecer. Déixeme só probalo moi rapidamente. Ben, en realidade, chegamos aquí. Entón, aquí, o que non vai en realidade é, en realidade, obter as-- Por iso, queremos saír o texto que temos anteriormente entrou na exhibición de alerta. E con base en texto, estamos vai amosar Mário. Isto transforma moi rapidamente para fóra se realmente funciona ou non. Entón, nese caso, se a entrada, imos dicir, 10, debemos ver 10. Moi bo, temos un número aquí. É moi bo. Agora, a última etapa será ser-- Así, o último paso que necesitamos facer agora é só unha chamada con Mario con base no nivel de entrada que temos colocado en carteleira de alerta. Entón, necesitamos converter esa cadea para IOS. Rebosar estático é moi impresionante. E, despois, é só chamar auto valor marioWithLevels. Imos ver o que vai realmente funciona ou non. Nós xa estamos dada unha pirámide. Imos tentar cambiar a altura. Que realmente funciona. É moi legal. De xeito que agora pode só entrada de calquera valor que quere. Nós só dicir que catro. Iso é moi legal. Polo tanto, este é basicamente un exemplo moi rápido Para saber como crear un proxecto en código s e como fío realmente rápido algúns eventos realmente sinxelo e funcións. Así, a fonte está indo para ser colocadas en liña máis tarde. Entón, se vostede está interesado en Mario funciona como iOS, Vou poñer exactamente o mesmo proxectos para o sitio web do CS50 máis tarde. Somos feitos, basicamente, coa verán, e antes de rematar Eu só quero que apunte a mozos algunhas características realmente impresionantes de que están dispoñibles en liña. Obviamente, a documentación de Apple vai ser moi útil. Pero, ademais, I especialmente Recomendamos catro fontes, escola de código, casa na árbore, e AppCoda WWDC vídeos. Código escola e casa da árbore son dous sitios Educadoras en liña, que especificamente concentrarse en enxeñaría de software. Especialmente para a escola código, eles ten realmente bo tutorial en iOS. Este é un exemplo moi rápido para el. Eles, de feito, crear un realmente cute-- ollar para aquel pequeno iPhone bonito gajo alí, é bastante impresionante. E a forma como eles explican Obxectivo Sintaxe C é perfectamente claro. Casa na árbore é o mesmo. E AppCoda é un foro. En realidade, é un blog que se executou por un moi experimentado Objective C programador. E todos eses tutoriais en AppCoda son moi curto e fácil de implementar, altamente recomendable. E se é un programador, definitivamente ir comprobar como os vídeos da WWDC, onde podes aprender sobre a última programación iOS técnicas, APIs e bibliotecas. Entón, iso é moi fermoso Lo ao seminario. Moitas grazas. E eu espero que divertirse crear o seu propio app IOS.