TIANYU LIU: Hey, ¿cómo es que va todo el mundo? Y esta es la aplicación para iOS programación del seminario objetivo c. Y mi nombre es Tianyu Liu. Soy un joven de Lowell en este momento, concentrándose en la informática. Así que en este seminario que soy te va a enseñar a los chicos un poco acerca de cómo hacer una aplicación. Yay, emocionarse por ello. Así que antes de empezar siquiera buceo en el lado real de programación, vamos a simplemente muy rápidamente hablar ¿Por qué puede querer construir una aplicación para iOS? ¿Por qué es tan impresionante iOS? Así que el primer problema, el primer cosa que es bastante impresionante para nosotros, especialmente como CS50 estudiante, es que iOS utiliza Objective C. Bueno, hay un nuevo lenguaje llamado Swift, pero nosotros no vamos a el uso que en este seminario. Si usted está interesado en Swift, hay es un seminario independiente de eso. Pero Objective C es básicamente un superconjunto de C. Significado que todo lo que se utiliza en C puede traducirse en Objective C muy fácilmente. Como se puede ver más adelante, que, efectivamente, hay algunos sintaxis muy básica, son básicamente exactamente de la misma, C y Objective C. Así, habiéndoos CS50 hasta este momento, que ya Objetivo saber C, al menos 40%. Además, Apple tiene una realidad robusta API para iOS. Hay un montón de realmente loco cosas que pueden hacer con ella. Uno de los cuales es alguien en realidad creado una aplicación para iOS para los coches de control, la cual es bastante interesante. Probablemente un helicóptero es más emocionante. Pero eso es lo poderoso la API de iOS puede ser. Y como es posible que tenga descubierto en este momento, el desbordamiento de pila es probablemente uno de los recursos en línea más importantes disponible para usted. Y una buena noticia, por cada único problema, puede posiblemente pensar mientras que la construcción de su proyecto final en Objective C, es posible que haya una respuesta de desbordamiento de pila. Es simplemente impresionante. Además de eso, iOS es realmente una plataforma donde se puede llegar a un gran audiencia con poco esfuerzo. No es como Android, donde todo está muy fragmentado. Todo iOS es unificada. Y mientras se crea una aplicación para iPhone, usted puede muy fácilmente puerto que para iPad, iPad mini, o diferentes tamaños de iPhone. Estos son todos muy conveniente. Y es realmente bueno para impresionar a tus amigos. Usted sólo puede mantener un iPhone y dile a tu amigo bueno, esta es la aplicación que hago. Usted puede hacer que para cualquier aplicaciones de escritorio, lo cual es agradable. Muy bien, ahora vamos a conseguir realmente en el lenguaje Objective C. Entonces, ¿por qué no empezamos con una sintaxis muy básica. Como mencioné antes Objetivo C Es básicamente un superconjunto de C. Así que un montón de sintaxis básica son en realidad exactamente el mismo. Declarar una variable y la adición de dos variables juntas es exactamente lo que hemos hecho en Mario. Nada nuevo aquí. Del mismo modo, el inquilino por bucle y condición también es el mismo. Usted puede hacer un bucle tal como lo han hizo en un Mario [inaudible]. Y puede hacerlo condiciones al igual que lo que han estado haciendo en sus conjuntos p anteriores. Sin embargo, Objective C no es completamente C, y hay algo que es una especie de extraño en ello. La primera es que cuando estás haciendo de programación C, normalmente se llama incluir y luego un nombre de biblioteca. Pero en Objective C se llama esa importación. Diciendo Básicamente funcionalidad, sólo diferentes nombres. Y las cadenas son en realidad un poco raro. Se puede ver que la primera cosa que es un poco raro es que tienes una bonita weird-- sorry-- tienes unas NS bastante extraños firmar aquí. Y la segunda cosa eso es un poco raro es que tienes una arroba antes de hecho declarando la cadena. Así que la arroba básicamente significa que una cadena es no sólo una cadena, en realidad es un objeto. Vamos a explicar que más tarde lo que no hacer pánico si no lo hace entienden lo que eso significa. Y la impresión de consola es un poco diferente porque en C que llamamos printf, pero en Objective C llamamos [inaudible]. Tal vez se pregunte qué es eso. Eso es básicamente printf, sólo un idioma diferente. Exactamente el mismo uso, exactamente la misma funcionalidad. Pues resulta que Objetivo C realidad tiene un ns prefijo en casi todo, cada tipo de datos básico, NSString, NSArray, NSDictionary. La razón es que ns en realidad significa Next Step, que es una empresa que Steve Jobs ha fundado, que es una empresa en la que el lenguaje Objective C nace. Así que esto es básicamente la tradición. Sé que es un poco raro, pero es Apple. Así que algo que es aún más extraño que es una declaración de la función. Esto es muy diferente de lo que ver en C, porque aquí lo que realmente no se parece a C más. Lo que tienes aquí-- por el forma en que este no es un punto de bala, este es un signo menos. Usted tiene un paréntesis signo menos vacío y después el nombre de la función. Digamos que si tener hola mundo, entonces el tipo de retorno sería nula porque volvemos nada. Lo que se pone muy raro es que cuando estás que tiene más de un parámetro pasar a una misma función que va a ser muy raro, como se muestra aquí. Tenemos un nombre de método, llamado addInt a [inaudible] y estamos pasando un parámetro. Pero después de eso, tenemos más llamada nombre de método con. Y después de que estamos pasando el segundo parámetro. Esto es en realidad un poco raro, pero todas estas declaraciones de funciones seguir el mismo patrón como este. Contamos con un signo menos para empezar. El signo menos podría ser un signo más a veces sobre la base de qué tipo de método es la misma. El método es básicamente otro nombre para la función. Y vamos a explicar que más tarde, cuando estamos hablando de objeto programación orientada. Primero se especifica el retorno escriba paréntesis en el interior, después de lo cual viene el nombre del método. Estás pasando un parámetro. Y si usted tiene más parámetros necesita extender el nombre del método y básicamente escribir algo más aquí. Podría ser cualquier cosa que quieras. En nuestro caso es con. Pero se podría decir final, o, o, o abc bar completo, lo que quieras. Y luego, después de que usted es pasando parámetro b. Este es un muy raro convención, pero somos vamos a ver por qué Apple quería hacerlo muy rápidamente. Entonces, ¿cómo se llama a la función? Llamar a una función en el objetivo C es también diferente de C. En realidad, llamar a un función en Objective C es más como si estuvieras hablando con alguien. Aquí tenemos uno mismo, lo que se llama un objeto. Básicamente, se está diciendo la objetar auto que decir "Hello World!" Así es como se llama a la función. Un objeto y un nombre de método se combinan entre sí. Y aquí es donde la extensión extraño por nombre del método realmente entra en juego. Veamos el segundo ejemplo. Nos acabamos de definir un método llamado addInt con bla, bla, bla. Así que en este caso cuando usted está llamando que [específico? mensaje?] que va para parecerse a sí mismo addInt: 10 con: 2. Suena como Inglés. Aunque la función declaración de la función es raro, el punto del objetivo de C patrón de declaración de método, es que cuando usted está llamando la función o método sonará como real Inglés. Así que es muy intuitiva una vez llegue a él. Especialmente en este caso, donde se puede básicamente ver que el nombre de la función es tipo de documentación de sí mismo. Usted no necesita ninguna más explicación para ver qué es exactamente lo que está sucediendo, lo que exactamente un parámetro haciendo. Más allá de eso, vamos a hablar un poco poco acerca de la programación orientada a objetos. Programación orientada a objetos es uno de la programación fundamental técnicas o patrones que se utilizado por Objective C. Objective C se llama Objective C, no C, por una buena razón. Así que antes de entrar en Sintaxis de C Objetivo, Vamos realmente ver rápidamente ¿qué es exactamente un objeto. Probablemente hemos hecho algo como objeto antes de que se llama la estructura cuando se está la aplicación de un árbol o una lista enlazada o [? tratar. ?] Por lo tanto, es básicamente como una estructura, pero es mucho más potente que eso. Un objeto tiene métodos y propiedades. Los métodos son básicamente funciones. Básicamente funciones que un específico para un determinado objeto. Y propiedades son básicamente los campo se especifica en la estructura. Así que para todos los objetos tenemos alguna propiedad que tiene algunas variables que son específicos para el objeto. Y tenemos algunas funciones que también son específicos para el objeto. Y las funciones se llaman métodos y las variables se denominan propiedades. Es sólo un nombre de fantasía. Mientras hecho, cada vista individual ves mientras abre una aplicación para iOS, digamos que Twitter o Facebook, cada vista única que se ve es un objeto. Y aunque toda la aplicación es un objeto para empezar. Concepto muy interesante. Y ¿por qué queremos objeto La programación orientada a? Así que usted puede imaginar que cuando se programa que se pone bastante complicado. Digamos que cuando estás la implementación de tablero de ajedrez, la lógica va a ser realmente complicado. Usted tiene 36 diferentes piezas, por lo que si usted quiero escribir lógica para todos 36 piezas diferentes en ajedrez, que va a haber una gran cantidad de diferentes funciones y variables. Es un montón de problemas. Y, probablemente, usted va a escribir una diferente método o función diferente para cada uno de la pieza a exactamente controlan lo que hacen. Pero si lo hace orientado a objetos programación, todas estas piezas puede ser abstraído en un solo objeto. Y el objeto tendrá algunos comunes propiedades, como qué tipo de pieza es? ¿De qué color es? ¿Cómo se puede mover? Y de esa manera usted tiene mucho simplificada de la lógica de la misma. Así que es sólo una manera realmente buena para hacer programas complicados, y la relación jerárquica dentro del programa, muy simple. Como vamos a ver por eso muy rápidamente cuando en realidad estamos haciendo programming-- cuando en realidad estamos haciendo un código S programación sesión posterior. Bueno, además de que, programación orientada a objetos es sólo un montón de diversión. Tienes que diseñar su propio objeto. Tienes que diseñar lo que hace que se vea como usted mismo. No hay una respuesta correcta a la misma. Y es totalmente interesante. Así que en la programación orientada a objetos, dos conceptos fundamentales será de clase e instancia. Una clase es básicamente una plantilla para el objeto. Y una instancia es básicamente un objeto específico. Digamos que usted está haciendo una cookie. En este caso, todos los galleta que realmente termina con va a ser un objeto. Pero el plato de galletas que se utiliza para hornear todas las cookies serán una clase. Una clase es básicamente una plantilla. Y la instancia será uno específica objeto creado de esa clase. Y se creará una instancia basado en la declaración de clase, como veremos en diapositivas posteriores. Así que vamos a hacer realidad una muy ejemplo rápido [inaudible]. Digamos que estamos declarando un objeto para un gato. El objeto debe tener-- la clase de gatos deben tener algunas propiedades y métodos. ¿Qué tipo de propiedades deberían los clase tener-- debe tener al gato? Por ejemplo, color, edad y raza, los será variables que son específicos de cada gato. Y esas son algunas de las cosas que utilizamos para describir un gato. ¿Qué tipo de método, o ¿qué puede hacer un gato? Algunos ejemplos rápidos serían persecución ratón, comer pescado o simplemente maullar. Esta es una muy rápida ejemplo de la clase de gato. Y una muy específica objeto gato será un gato donde especificamos el color, la edad y la raza. En ese caso, nuestro objeto es ya una clase no más. Copiamos la plantilla de la clase y especificamos cada información específica a ese objeto específico para que sea independiente. Y cuando usted está llamando un método dentro de un objeto, que acaba de llamar maullido en el objeto, que es el gato que acaba de crear. Probablemente va a imprimir algo así como "¡Hola Mundo! Maullar. " Bastante lindo. Muy bien, vamos a entrar en algunos detalles y ver lo que hace exactamente eso traducir en ser la programación iOS. Así que en iOS programación cada clase se llevará a cabo en dos archivos. Un archivo está aquí, que se llama la interfaz. Otro archivo está aquí, que se llama aplicación. Normalmente la interfaz de tendrá extension.h como hemos visto en las bibliotecas C. Y archivo de implementación es va a tener extension.n. Es un poco raro. Pero .n significa en realidad .c, no hay diferencia fundamental entre los dos. Así que en este caso, podemos ver que estamos declarando interfaz, Cat: objeto. Eso se llama herencia. Básicamente estamos heredando el clase gato de la clase de objeto. Así que cada propiedad y un método que fue definido previamente en la clase de objeto se definirá automáticamente en una clase de gato también. Además de eso, definimos color, raza y edad, tres variables. Que en realidad se parece algo que has hecho antes. Parece estructura. Eso es básicamente la sintaxis para la declaración struct, y que es totalmente correcto. Y como he mencionado antes, la diferencia una estructura y un objeto, una de las diferencias fundamentales es que un objeto tiene método, mientras que un struct sólo tiene variables. Así que además de las propiedades o las variables que hemos creado para el objeto, especificamos algún método. Digamos que tenemos aquí dos métodos, uno es el maullido, otra es ratón persecución. Probablemente Queremos estar pasando un parámetro basado en nuestro método anterior modelo de declaración. Es posible que desee estar pasando un ratón. Y es probable que desee para devolver un significante bool si su gato tiene éxito cogido el ratón o no. Esta es la interfaz, pero nosotros sí ver que la interfaz de realidad no hace nada. Simplemente le dice a un programa lo exists-- lo que existe en la clase de gato. Así que para que la programa para hacer algo, tenemos que tener los archivos de implementación. Así que aquí, lo primero que hacemos es obviamente, importamos la interfaz. Después de que importamos la interfaz, definimos el método. Digamos aquí miau sería simplemente imprimir "Hola Mundo!" a la consola. Y después de la aplicación archivo, estamos más o menos hecho. Esto es básicamente una clase declaración de una clase. Así que ahora la pregunta es, ¿cómo se declara una variable? La forma de utilizar una clase para crear un objeto en Objective C está escrito aquí. Primero se especifica que Esto es un puntero gato, porque todos los objetos en Objective C finalmente se implementa como un puntero. Y se llama a la clase, llamarlos como alloc, que es básicamente malloc, diciendo al sistema operativo que necesita algo de espacio de memoria para este objeto. Después de que usted tiene un objeto ya y sólo inicialice. Esto es sólo convención. Sé que es es un poco raro, pero esto es realmente cómo Apple hace cosas. Asignación de propiedades se en realidad bastante sencillo. Es muy similar a lo que está haciendo cuando estás asignando algunos específicos campo en el interior de la estructura. Sólo tienes la variable nombre, el nombre de la propiedad, y asignar un valor específico a la misma. Y llamar a un método es muy similar. El llamar a un método es básicamente lo que hablo para llamar a cualquier método en Objective C. Estás pasando un objeto, en este caso va a ser Mycat, y estás pasando el nombre del método. Como si usted está hablando con el objeto, Mycat, que usted debe maullar. Es bastante interesante. Después de eso, hay una patrón de diseño más esencial que tenemos que hablar antes de llegar al código real S. Ese patrón de diseño se llama evento impulsado programación. Esto es también, probablemente, uno de los más ideas fundamentales en la programación iOS. Así que probablemente no sabes qué es exactamente es la programación orientada a eventos, pero en realidad no es que da miedo. Pues en efecto, usted tiene ha hecho eso antes. Esta es una de las líneas de lo que has ya se ha escrito en los últimos [inaudible] de CS50, google.maps.event.addListener (marcador, "Click", function () {}) :. Al llamar a esta línea son esencialmente diciendo la computadora que siempre que el evento llamado "Clic" que sucede en el marcador, utilizar dicha función. Esto es muy diferente de lo que haces en mario.c. En mario.c que acaba de ejecutar el programa una vez, le da una salida, y ya está. Son algo así como uno los programas de tiro. Programas por eventos son muy, muy diferente. Imaginemos, si Facebook es un uno programa de tiro que no es muy bueno. Usted acaba de ir a Facebook una vez que se hace. Se le da una salida y nunca lo recuperó. Nunca tienes nada más. Así que aquí, sobre todo el patrón que utilizamos es evento impulsado, de manera que cada función ser atrapado en base a lo evento ha ocurrido. Por ejemplo, si tenemos un botón y especificamos que cada vez que se hace clic en ese botón, llame a la función llamada "Hello World!" De esa manera podemos realmente gestionar la lógica de funcionamiento fluir en una forma muy flexible. El usuario puede hacer o llamar a una función que ya ha sido llamado. Es completamente basado en lo que hacen los usuarios. Así que podemos ver que se trata de en realidad mucho mejor que mario.c. Y una buena noticia es que es en realidad no es un concepto nuevo. Ustedes ya lo han hecho que en el último conjunto de problemas. Así que en Objective C hay tres diagramas diferentes para la programación orientada a eventos. El primer diagrama es llamada acción de destino, donde se enlaza un botón de prensa con alguna función. Digamos que, al hacer clic en algún botón, llamar alguna función. Esta es la acción objetivo muy simple. El segundo es en realidad el más difícil, se llama delegación en el protocolo. Vamos a explicar que en gran detalle más adelante. Y la tercera forma es la notificación. En realidad, esto no es muy importante en la medida de que a nosotros respecta, porque la oportunidad que usted va a utilizar la notificación en su proyecto final es bastante bajo. Así que vamos a saltar esa parte. Y vamos a bucear en la delegación en el protocolo. Entonces, ¿qué es exactamente un protocolo? O ¿qué es exactamente una delegación? Vamos a hablar de protocolo para empezar. Los protocolos son nada más que hechos. Pero estos eventos se dan a usted por Apple para empezar. Por ejemplo, yo no soy completamente seguro de cómo muchos de ustedes chicos uso original de Apple aplicación de correo o de contacto, pero cada vez que desplazarse por la mesa y pulsar la celda específica sobre la mesa, que es un evento. Y si usted quiere hacer ese evento por sí mismo, en realidad es un poco difícil. Así que Apple ha dado que, incluso a usted por lo que sólo puede usar directamente el evento para hacer algo por su cuenta. Los protocolos son en realidad muy, muy ampliamente utilizado en Objective C. Bueno en De hecho, cada aplicación individual tiene algo atrapado aplicación delegado. Dentro de delicada es la totalidad de la protocolos para la carga de la aplicación. Digamos que hay un evento de aplicación hizo carga. Así que lo que debe suceder después de haber creó una aplicación, después de abrir la aplicación, después de cerrar la aplicación, o después pones el iPhone a dormir. Estos son todos los eventos que tiene ya ha dado a usted. Y originalmente dentro de estas partículas no habrá aplicación. Apple acaba te dijo que esta función pasará cuando ocurre algún evento, sino lo que haces con eso función es totalmente suya. La delegación es básicamente diciendo la clase que usted debe manejar estos protocolos. Es un poco confuso, pero será mucho más clara cuando hacemos los códigos de s en la acción. Delegación en el protocolo es en realidad un mecanismo muy sólido en el sentido que si hacemos delegación a una clase específica, podemos manejar esencialmente todo tipo de eventos utilizando cualquier clase que tenemos, herramienta muy conveniente. Así que un ejemplo rápido para delegación en el protocolo será lo que acabo de hablar. Este protocolo específicamente se llama tableview [inaudible] seleccionar papel en [? índice?] [? pasado. ?] Así que este una evento que se llamó cuando realmente toque en una específica célula en su tableview, vamos a decir en tu correo o en su aplicación de contactos. Dentro de una función no había originalmente no hacer nada. La función no hacer nada por defecto. Pero usted puede especificar lo que hace la función, teniendo en cuenta lo que quiere de su aplicación. Herramienta muy conveniente. Y con todo eso Dicho esto, yo, básicamente, cubrir una sintaxis muy básica y concepto fundamental para el objetivo C programación, y podemos hacer algo de código s. Mucho más emocionante. Así código s es en realidad un poco abrumador cuando se abre por primera vez. Una nota rápida, así que si usted querer hacer el desarrollo de iOS, Yo recomendaría altamente tienes un Mac. Porque hacer el desarrollo en iOS Windows es muy, muy difícil. Es factible, pero es muy difícil. Y definitivamente hace que no desea utilizar g de edición. Así que en el código de s que tenemos varias áreas diferentes. La primera vez que abras s código verá un área de navegación, que básicamente muestra que todo el los archivos que están en el proyecto actual. Tiene un área de la barra de herramientas, que es, básicamente, la gestión de puntos de vista, o alguna pequeña rápida herramientas sobre sí mismo código s. Y este es el área real editor. Esta zona es muy similar g editar, pero mucho mejor que g edición. Y en esta área de la derecha, es llamado el área de utilidad. El área se vuelve realmente útil cuando va a crear la interfaz o especificar algunas configuraciones rápidas para su aplicación. Y la zona final es la depuración. Esta área contiene la consola. Así que cuando usted dice printf, o NSLog en nuestro caso, todos los resultados son va a imprimir aquí. Bien? Supongo que podemos hacer muy rápido un ejemplo para la programación iOS. Y seamos realmente abren s código. Así que cada vez que usted abre s código, es va a aparecer algo así. Se va a pedir que qué es lo que quieres hacer? ¿Quieres empezar algo aleatoria, un parque infantil, básicamente, que sólo puede probar código sin realmente comprometerse a cualquier aplicación. ¿Quieres crear un nuevo proyecto? ¿O es que quiere continuar trabajando en el proyecto existente? En nuestro caso vamos para crear un nuevo proyecto. Así que es muy agradable, s código de hecho ya tiene Ha dado algunas plantillas para la creación de objetos. Si usted quiere hacer un juego, el código S en realidad tiene una plantilla de juego para usted, tiene aplicaciones basados ​​en páginas, aplicación basada ficha. En este caso, vamos hacer algo muy simple, y vamos a utilizar un aplicación de vista individual. Después de eso, lo que usted quiere llamar su producto, y ¿cuál es su nombre, ¿cuál es su identificador, y ¿qué idioma que utilice. Aquí no queremos comprobar el uso de datos básicos. Datos Básicos es básicamente un databasing iOS. Si lo hace de Datos Básicos, s código se va a definir mucho clases más complicadas para usted. Así que para mantener todo simple, estamos sólo va a prescindir de Datos Básicos ahora mismo. El problema que vamos a ser utilizando es que-- el problema vamos a estar creando es que nos básicamente desee importar Mario de C para una aplicación para iOS. Así que vamos a llamar a que Mario-iOS. Por supuesto que especifique lo que quiere poner en su proyecto. Y ahí vamos. Así que esto es un poco abrumadora, pero esto es en realidad lo que acabamos de ver en las diapositivas. Y la primera área que vemos en este momento es básicamente la configuración del proyecto. Así que todo lo que quieres hacer proyecto, ¿qué tipo de dispositivo, vamos a decir qué tipo de dispositivo ¿Quieres que tu aplicación para que aparezca en? ¿Es el iPhone, iPad o universal? Así que la orientación del dispositivo, todas estas cosas. No es muy importante, pero podría ser, pero esto es un lugar donde se configura su proyecto si en realidad desee implementar a la tienda de Apple. Muy bien, vamos a ver algo que está dentro de nuestro código. Vamos a pasar por el navegador de archivos. Y estos son todos los archivos que ya llegó con la plantilla, muy agradable. Así que cuando hacemos clic en uno de ellos esto es lo que parece. Muy similar a g edición. Pero usted puede ver que el resaltado de sintaxis es probablemente un poco más agradable. Y es en realidad mucho más poderoso que la edición g. Y usted puede completar auto un montón de cosas para ti, como veremos muy rápidamente. Vamos a abrir la zona de depuración también. Muy bien, como podemos ver, la consola está aquí. Esto es lo que vas a ver dónde estás en printf o nsloging algo. Así que sin más preámbulos, vamos a realidad compilar la aplicación y ver qué pasa. Una característica esencial para código de s, es que el código s viene con un simulador de iPhone. Así que usted no necesita tener un iPhone para tratar su proyecto, código de s puede simular que para que, como podemos ver en este momento. Es bastante agradable. Se trata de tomar un poco poco de tiempo para compilar y básicamente tenemos una aplicación vacía, que en realidad no hace nada. Pero compila. Es bastante impresionante. Es mucho mejor que C, ¿eh? Muy bien, entonces vamos a tratar de añadir algo. Un archivo que es un poco raro aquí se llama storyboard. Esto es realmente un gran, característica impresionante para el código s. Debido a que en el código de s, en realidad se puede arrastrar y soltar elementos en la interfaz y se mostrará directamente hacia arriba. Vamos a intentarlo. Dejamos caer una etiqueta aquí, "Hola Mundo !!!" Podemos centrar eso. Bastante fresco. Ahora vamos a correr esta simulación de parada. Aquí tenemos "Hola Mundo !!!" Ni siquiera nos hacemos ningún tipo de codificación todavía. ¿Qué diablos está pasando? Esto es lo poderoso Interface Builder puede ser. Alguien llegó a decir que Probablemente usted puede apenas completar una aplicación sin escribir probablemente mil líneas de código apenas usando el Interface Builder. Pero es probable que no la mejor manera de hacerlo. Ahora vamos a realmente poner manos a la codificación. Así que la estructura del archivo es realmente muy interesante porque, como usted puede ver, hay hay una función principal en cualquier lugar. ¿Ves? Como mencionamos antes, se puede ver que esta es un archivo de implementación para una clase específica. Pero no hay ninguna parte principal. Entonces, ¿dónde es el principal? En realidad, hay una principal, pero la principal es en realidad oculta de usted. La principal está aquí. Esto se ve muy familiar. Así que, básicamente, lo que iOS está haciendo dentro de main es que cada vez principal es llamada, que es básicamente cada vez que la aplicación se ejecuta, se crea un objeto llamado AppDelegate. Como mencioné antes, la totalidad aplicación es en realidad un objeto por sí mismo. Así de esta manera, básicamente el iOS está diciendo al compilador que bien, yo voy a crear un producto llamado AppDelegate, y que va a ser mi aplicación. Así que hay que ir a través de ese AppDelegate y ver lo que está haciendo ese tipo. Mi trabajo está hecho para mí. Y en AppDelegate se puede ver que hay algunas funciones realmente extraños, bueno, en realidad métodos, que Apple ya le ha dado. Qué son éstos? Estas son en realidad sólo protocolos que yo estaba hablando. Así que estos son eventos que Apple te ha dado para empezar. No hay nada en algunos de las funciones en este momento, pero si queremos inicializar algo para nuestra aplicación antes de entrar en mostrar cualquier punto de vista, lo hacemos aquí. Usted sólo puede leer el nombre y supongo el evento es en realidad muy clara. Así que ahora principal ha creado un objeto para AppDelegate. ¿Y qué AppDelegate va a hacer es en realidad también se oculta a usted. El AppDelegate va a empezar cargar el stock de ViewController. Así que básicamente va a empezar cargando todas las vistas que tienes y simplemente hacer la vista basado en la jerarquía. Así que en este caso sólo tenemos un punto de vista, que es aquí. Así que esa es la única vista eso va a ser llamado. La lógica ViewController está aquí. Este es el código que realmente controla la vista que acabamos de ver. Muy bien, vamos a hacer algo aquí. Así viewDidLoad suena como un evento, cuando en realidad esto es también un delegado, esto también es un protocolo. Así que sea cual sea el punto de vista se ha cargado, todo dentro de la función será llamado. En este caso debemos ver "Hola Tianyu! "Si ejecuta el programa. Se está haciendo un poco lento compilar archivos de storyboard. Bueno de hecho, sí vemos una salida para él. Es una pasada. Ahora vamos a hacer realidad Mario. Voy a definir el funcionar muy rápidamente. marioWithLevels: resultados (int) de nivel. Muy bien, esto es en realidad la increíble característica de autocompletado de código s. Así que cuando usted escribe para escribir y entrar, que ya ha renunciado a la plantilla para usted, que es bastante guay. Eso debería mirar realmente familiar para ustedes. Lo sentimos, esa es mi culpa. Muy bien, fresco. Esa lógica debería ser muy familiar a ustedes, especialmente justo Mario. Pero ahora vamos a imprimir en la consola cada vez, porque queremos mantener de alguna manera pista de lo que estamos imprimiendo. Vamos a utilizar el los resultados de alguna manera más tarde, para mostrar la impresión fuera resultado al usuario. Así que en vez sólo somos nslogging todo, que estamos almacenando todo en consecuencia llamada a la función, pero la lógica es exactamente el mismo. Después de que terminemos, nos sólo imprimir los resultados. Y aquí en lugar de imprimir mi nombre, vamos a llamar a una función. Vamos a ver qué pasa. Vaya, obviamente. Tenemos una bonita pequeña pirámide aquí. Esto es, básicamente, C, sólo somos manipulando donde se llama a una función y cómo no una función similar. No hay nada diferente. Pero esto es en realidad no muy emocionante aquí, porque no estamos viendo nada de la aplicación para el iPhone. Así que si usted realmente tiene un iPhone app-- si usted realmente tiene Mario iOS derecho Ahora, usted no va para ver todo lo que tiene algo que ver con Mario porque todas esas salidas en una consola se ocultan de un usuario. Esto es lo que se ve, que es "Hola Mundo !!!" No es bueno. Ahora vamos a tratar de hacer que el usuario vea qué es exactamente lo que estamos imprimiendo. Así que no necesitamos para etiquetar más. Vamos a tratar de averiguar algo otra cosa que pueda ser útil. En realidad, hay una elemento que se llama campo de texto, lo que podría ser muy útil para nosotros. Básicamente muestra una región de texto que se pueden editar. Así que parece realmente útil. Ahora vamos a arrástrelo y suéltelo. Wow, tenemos una vista de texto en nuestra opinión, realmente de lujo. Eso es un poco demasiado grande. Vamos a hacerlo más pequeño. Póngalo en el centro. Hacerla más pequeña también. Ahora tenemos una vista de texto, que pudimos puede utilizar para mostrar nuestro resultado final. Pero en este momento es definitivamente no va a funcionar porque hay no-- la ViewController acabamos definido no sabe que hay una vista de texto que hay. Así que tenemos que de alguna manera vincular la vista de texto que acabamos de creado con la clase que ya ha venido con nosotros. La forma de hacerlo es realmente realmente mágico. Pues abre storyboard. Hay una especial [inaudible] llamado [? asistente?] [inaudible]. Al hacer clic en eso, es va a abrir dos archivos. Una de ellas es una clase y la otra es una vista correspondiente para ello. Es muy, muy útil. Y vamos a pasa por el archivo .h. De control, esto es [inaudible] lógica. Pulse Control y arrastre la vista de texto en la declaración. Vamos a llamar a ese outputView. Conecte. Así que aquí hemos declarado una nueva propiedad para nuestra clase ViewController. Y la nueva propiedad es sólo la vista de texto hemos creado en el edificio de la interfaz. Así que de esa manera pudiéramos el acceso de todos los datos y manipular todo lo que está en el interior la vista de salida, que es impresionante. Así que en nuestro código real, vamos a hacer algo con él. Así que esta vez cuando somos como impresión el resultado final de Mario, estamos en no registrar nada. Quiero decir que podíamos mantener la declaración de registro. Además de eso, enviar la lectura que acabamos de creado a la vista de salida, la cual es una interfaz de usuario TextView que acabamos de crear. Ahora vamos a ver qué pasa. Guauu. Tenemos una pirámide en la aplicación en este momento. Así el usuario puede ver nuestra producción porque hemos copiado la salida de nuestro código a nuestra interfaz. Es bastante bueno. En realidad no es que emocionante porque nos can-- Toda la aplicación está haciendo es mostrando una pirámide para usted, y no hay nada que puedas hacer al respecto. No es particularmente emocionante. Así que ahora vamos a hacer un botón que despejará las vistas. Parece que un botón será útil. Arrastre y suelte. Botón uno. Botón dos. Así que cuando hacemos clic en la izquierda botón, la vista debe desaparecer. No debe haber nada en la pantalla. Y cuando hacemos clic en el botón derecho, Mario, la vista se va a aparecer de nuevo. Así de esta manera también hacemos el cosas mágicas, control y arrastre a la declaración de la clase en el asistente La directora del en el asistente de espectador. En este caso estamos especificando que eso debería ser una acción. clearMario. Así que aquí ya hemos creado una acción llamada clearMario, que es el método que se llama cada vez que pulsamos el botón de borrado. Así que en nuestra realidad código, vamos a poner el texto de salida y la vista de salida en nada, y de esa manera se parece ser clara. Además de eso, vamos a crear otro método llamado runMario. Oh, lo siento, eso no debe ser una propiedad. Muy bien, que debería ser una acción así. Y cuando esa función es llamada, simplemente corremos Mario diez. Esperemos que va a estar bien. ¿Se compilar? Sí. Ahora tenemos una visión. Tenemos una salida. Y vamos a ver qué pasa. Que se ha ido. Es volver de nuevo. Así que aquí hemos especificado qué tipo de función será llamado cuando tecleamos en algo, cuando presionamos un botón específico. Esta es básicamente la esquema de acción de destino para el evento impulsado programación en Objective C. Además de eso, que no es muy emocionante porque no podemos realmente cambiar qué tan alto será la pirámide, así que probablemente queremos de alguna manera obtener una entrada del usuario y cambiar la altura de la pirámide basa en lo que la salida. Así que vamos a hacer eso. Así que esta vez cuando llamamos runMario, no nos limitamos a un llamado Mario directamente. El título de este uno. Delegado. Esto es muy interesante. ¿Qué es un delegado? Me voy a poner uno mismo aquí. Y vamos a ver lo que significa eso más tarde. Así que aquí hemos creado básicamente un instancia específica llama una alerta de UI punto de vista. Una vista de alerta interfaz de usuario es básicamente lo que quieras ver cada vez que algo pops y le pregunta para la entrada, como lo que va a pasar cuando usted está tratando para comprar algo en una tienda de aplicaciones. Además de eso, después de crearlo, sólo mostramos la alerta. Muy bien, vamos a rápidamente prueba de la voluntad de que el trabajo o no. Eso es muy cool. Ahora vamos a crear una realidad campo de entrada para la alerta de la interfaz de usuario. Así es como lo hacemos. Y debemos tener un vista de entrada para la alerta. Muy fresco. Digamos 10. No está haciendo nada bien ahora porque la llamada realidad no cambió para ejecutar mario. Así que esto se ha convertido en un poco poco raro porque siempre pulsamos un botón de abajo, cada vez que pulse un botón en la vista de alerta, algo sucede, pero no sucede. ¿Cómo nos atrapamos eso? ¿Cómo sabemos que un usuario ha desestimado una vista de alertas y ya entrado en un número, porque en este momento nada está sucediendo realmente. Bueno, puede haber adivinado bien, delegación. Así que además de todo estas declaraciones, tenemos que añadir una nueva delegación a se llama IU alerta de delegado. Así que cada interacción o evento que vamos a tener con la vista alerta UI va a ser manejado por nuestra clase también. Así que además de eso, será alerta botón Ver Haz click en el índice. Esto se alcanza. Así que en ese caso tenemos ya-- así que tenemos encontrado a cabo un protocolo que controlará el evento cuando hacemos clic en el botón Hecho en la vista de alerta. Así que cada vez que desestime el vista alerta, esto debe suceder. Permítanme pruebo muy rápidamente. Bien hecho, hemos llegado aquí. Así que aquí, lo que no lo hará conseguir realmente es en realidad obtenemos el-- Así que queremos salir el texto que tenemos previamente ingresó en la vista de alerta. Y basado en texto, estamos va a mostrar Mario. Esto resulta muy rápidamente si realmente funciona o no. Así que en ese caso, si de entrada, digamos, 10, deberíamos ver 10. Muy bien, tenemos un número aquí. Es bastante bueno. Ahora el último paso será ser: Así que la último paso que tenemos que hacer en este momento es sólo una llamada de Mario con nivel basado en la entrada que hemos puesto a la vista de alerta. Así que tenemos que convertir esta cadena en iOS. Desbordamiento estática es muy impresionante. Y luego pues sólo llamamos auto valor marioWithLevels. Vamos a ver que va a realmente funciona o no. Ya estamos dieron una pirámide. Vamos a tratar de cambiar la altura. Que realmente funciona. Es una pasada. Así que ahora usted puede simplemente introducir cualquier valor que desee. Digamos cuatro. Eso es bastante impresionante. Así que esto es básicamente un ejemplo muy rápido de cómo crear un proyecto en código de s y cómo cablear muy rápidamente algunos eventos y funciones muy simples. Así la fuente va para ser puesto en línea más tarde. Así que si usted está interesado en cómo funciona iOS Mario, Voy a poner exactamente lo mismo proyectos en el sitio web CS50 tarde. Básicamente estamos terminado con la verano, y antes de terminar Sólo quiero señalar a ustedes a algunos recursos realmente impresionantes que están disponibles en línea. Obviamente, la documentación de Apple va a ser muy útil. Pero además de eso, especialmente recomendar cuatro fuentes, escuela de código, casa del árbol, AppCoda y WWDC vídeos. Código del colegio y de la casa del árbol son dos sitios web Educadoras en línea, que se centran específicamente en ingeniería de software. Especialmente para la escuela código, que tienen muy buen tutorial sobre iOS. Ese es un ejemplo muy rápido para él. Ellos en realidad crean una realidad cute-- mira que poco iPhone lindo amigo de allá, que es bastante impresionante. Y la forma en que explica Objetivo Sintaxis de C es perfectamente clara. La casa del árbol es el mismo. Y AppCoda es un foro. En realidad es un blog que se ejecutó por un objetivo muy experimentado C programador. Y todos esos tutoriales en AppCoda son bastante corto y fácil de implementar, muy recomendable. Y si usted es un desarrollador, Definitivamente ir a ver cómo los videos WWDC donde se puede aprender sobre la última programación iOS técnicas, APIs y bibliotecas. Así que es más o menos durante el seminario. Muchas gracias. Y yo espero que se diviertan la creación de su propia aplicación para iOS.