Post on 01-Jun-2015
transcript
Introducción a iOS developmentRaquel Hernandez - @maggit
¿Que aprenderemos en este curso?
Instant gratification
¿Hasta dónde podemos llegar?
• Mike Krieger
• Technical Co-founder of Instagram
• Instagram sold to Facebook for 1 billion in cash and stock.
#winning
Retos de un iOS developer principiante
• Objective-C
• Las ideas generales
• Los frameworks
¿Que tan rápido puedo aprender?
¿Necesito unirme al Apple Developer Program?
¿Qué necesito?
Pre-Requisitos
• Class Clase, descripción o plantilla para un objeto.
• Instance Instancia, manifestación
• Message Mensaje, enviado a un objecto para hacerlo actuar.
• Method Método, código invocado por un mensaje.
• Instance variable Variable de instancia, almacenamiento dentro de un objeto.
• Superclass/Subclass Terminos de herencia.
• Protocol Similar funcionalidad que una interface en Java.
Familiaridad con los siguientes terminos de programación orientada a objetos
Manos a la obra
iOS Overview
• Core OS
• Core Services
• Media
• Cocoa Touch
Core OS:
• OSX kernel
• Power management
• Keychain access
• Sockets
• Security
• Certificates
• File System
Core Services
• Collections
• Address Book
• Networking
• File Access
• SQLite
• Core Location
• Net Services
• Threading
• Preferences
• URL Utilites
Media
• Core Audio
• Core Animation
• Audio Mixing
• Audio recording
• OpenGL
• Video Playback
Cocoa Touch
• Web view
• Map kit
• Image picker
• Camara
• Multi-Touch
• Core Motion
• View Hierarchy
• Localization
• Controls
• Alerts
Componentes de la Plataforma
• Tools
• Language
• Frameworks
• Design Patterns
Design Patterns
• Interfaces mejor definidas
• Apps adaptables y extendibles
• Objetos reusables
Ventajas al usar un patrón de diseño
Speed-to-market ó failure-to-launch
Seguir un patrón de diseño nos permite iterar más eficientemente
iOS 6
iOS 7
Controlador
VistaModelo
¿Que patrón de diseño debo seguir al desarrollar para iOS?
MVC
MVC
Es la representación de la información, con la cual va a operar nuestra aplicación.
Controlador
VistaModelo
MVC
Objeto subordinado del controlador que es presentado al usuario de forma gráfica.
Controlador
VistaModelo
MVC
Responde a eventos, usualmente acciones de usuarioe invoca peticiones al modelo y a la vista (lógica de interfaz de usuario).
Controlador
VistaModelo
MVC explicación rápida
ModeloSuma, resta, multiplica, divide
VistaComponentes de la interfaz de usuario (botones de
operación, texto de resultado)
ControllerObjetos que escuchan y comunican información
entre el modelo y la vista
MVC explicación rápida
Controlador
Vista Modelo
Acción del usuario
Actualiza Notifica
Actualiza
Comunicación en MVC
MVC
Controladores siempre pueden hablar directamente con su modelo
Controlador
VistaModelo
MVC
Controladores siempre pueden comunicarse directamente con la vista
Controlador
VistaModelo
Outlet
MVC
El modelo y la vista nunca deben comunicarse entre ellos.
Controlador
VistaModelo
Outlet
MVC
La comunicación entre los objetos del MVC es ciega y estructurada.
Controlador
VistaModelo
Outlet
Target
Action
¿Puede una vista comunicarse con el controlador?
MVC
Comunicación por medio de delegación
Controlador
VistaModelo
Outlet
Target
Action
Delegate
MVC
Controlador
VistaModelo
Outlet
Target
Action
DelegateNotificaciones
Text
¿Qué pasa si el modelo tiene información actualizada y necesita que el controlador lo sepa?
Objective-CConceptos Básicos
Fast introduction
Objective-CObject-Oriented
Fast
Dynamic
Built on C
Objective-C extiende ANSI CDefiniendo nuevas clases
Clases y metodos de instancia
Metodos de invocación (mensajes)
Declaración de propiedades
Static y dynamic typing
Bloques
Protocolos y Categorías
Clases en Objective-C
Interface Implementation
Clases en Objective-C
Dissecting an iOS class
Simple clase en iOS
Tweet.h Tweet.m
Interface Implementation
Simple clase en iOS
Tweet.h Tweet.m
Público Privado
#import <Foundation/Foundation.h>
Tweet.h Tweet.m
#import <Foundation/Foundation.h>
Properties
Tweet.h
Tweet.m
Properties - ¿Qué pasa detrás de escenas?
Tweet.h Tweet.m
Getter
Setter
Define setter and getter
Ya no tenemos que hacer esto
Properties
Tweet.h
Tweet.mApunta a un objeto tipo NSString
Todos los objectos en iOS viven en el heap
Tweet.h
Tweet.m
Garbage collection NO existe en iOS
Tweet.h
Tweet.m
Automatic Reference Counting - ARC
Tweet.h
Tweet.m
Automatic Reference Counting - ARC
Tweet.h
Tweet.mStrong - Strong Ownership
Nonatomic
Tweet.h
Tweet.mNonatomic
Properties pueden ser de diferentes tipos
Tweet.h
Tweet.m
Instance Methods y Class Methods
Ruby
MyClass.h
Objective-c
MyClass.m
Mi primer instance method
Tweet.h
Tweet.m
Instance method
Demo
Let’s code our class Tweet
MVP
Demo
MVP
Let’s code our demo Whereami
¿Autodidacta?
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/
Introduction.html#//apple_ref/doc/uid/TP40005149-CH1-SW2
Para los que nunca han programado orientado a objetos
Para los que quieran abundar en los conceptos básicos de Objective-C
https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/DelegatesandDataSources/
DelegatesandDataSources.html#//apple_ref/doc/uid/TP40010810-CH11-SW1
Para los que quieran aprender las bases de programación en Objective-C
https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/
Introduction.html#//apple_ref/doc/uid/TP40011210
No me quedó claro el manejo de memoria en iOS
https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/
CFMemoryMgmt.html#//apple_ref/doc/uid/10000127i
Preguntas
@maggit