62
Introducción a iOS development Raquel Hernandez - @maggit

Introducción Curso iOS

Embed Size (px)

Citation preview

Page 1: Introducción Curso iOS

Introducción a iOS developmentRaquel Hernandez - @maggit

Page 2: Introducción Curso iOS

¿Que aprenderemos en este curso?

Instant gratification

Page 3: Introducción Curso iOS

¿Hasta dónde podemos llegar?

• Mike Krieger

• Technical Co-founder of Instagram

• Instagram sold to Facebook for 1 billion in cash and stock.

#winning

Page 4: Introducción Curso iOS

Retos de un iOS developer principiante

• Objective-C

• Las ideas generales

• Los frameworks

Page 5: Introducción Curso iOS

¿Que tan rápido puedo aprender?

Page 6: Introducción Curso iOS

¿Necesito unirme al Apple Developer Program?

Page 7: Introducción Curso iOS

¿Qué necesito?

Page 8: Introducción Curso iOS

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

Page 9: Introducción Curso iOS

Manos a la obra

Page 10: Introducción Curso iOS

iOS Overview

• Core OS

• Core Services

• Media

• Cocoa Touch

Page 11: Introducción Curso iOS

Core OS:

• OSX kernel

• Power management

• Keychain access

• Sockets

• Security

• Certificates

• File System

Page 12: Introducción Curso iOS

Core Services

• Collections

• Address Book

• Networking

• File Access

• SQLite

• Core Location

• Net Services

• Threading

• Preferences

• URL Utilites

Page 13: Introducción Curso iOS

Media

• Core Audio

• Core Animation

• Audio Mixing

• Audio recording

• OpenGL

• Video Playback

Page 14: Introducción Curso iOS

Cocoa Touch

• Web view

• Map kit

• Image picker

• Camara

• Multi-Touch

• Core Motion

• View Hierarchy

• Localization

• Controls

• Alerts

Page 15: Introducción Curso iOS

Componentes de la Plataforma

• Tools

• Language

• Frameworks

• Design Patterns

Page 16: Introducción Curso iOS

Design Patterns

Page 17: Introducción Curso iOS

• Interfaces mejor definidas

• Apps adaptables y extendibles

• Objetos reusables

Ventajas al usar un patrón de diseño

Speed-to-market ó failure-to-launch

Page 18: Introducción Curso iOS

Seguir un patrón de diseño nos permite iterar más eficientemente

iOS 6

iOS 7

Page 19: Introducción Curso iOS

Controlador

VistaModelo

¿Que patrón de diseño debo seguir al desarrollar para iOS?

MVC

Page 20: Introducción Curso iOS

MVC

Es la representación de la información, con la cual va a operar nuestra aplicación.

Controlador

VistaModelo

Page 21: Introducción Curso iOS

MVC

Objeto subordinado del controlador que es presentado al usuario de forma gráfica.

Controlador

VistaModelo

Page 22: Introducción Curso iOS

MVC

Responde a eventos, usualmente acciones de usuarioe invoca peticiones al modelo y a la vista (lógica de interfaz de usuario).

Controlador

VistaModelo

Page 23: Introducción Curso iOS

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

Page 24: Introducción Curso iOS

MVC explicación rápida

Controlador

Vista Modelo

Acción del usuario

Actualiza Notifica

Actualiza

Page 25: Introducción Curso iOS

Comunicación en MVC

Page 26: Introducción Curso iOS

MVC

Controladores siempre pueden hablar directamente con su modelo

Controlador

VistaModelo

Page 27: Introducción Curso iOS

MVC

Controladores siempre pueden comunicarse directamente con la vista

Controlador

VistaModelo

Outlet

Page 28: Introducción Curso iOS

MVC

El modelo y la vista nunca deben comunicarse entre ellos.

Controlador

VistaModelo

Outlet

Page 29: Introducción Curso iOS

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?

Page 30: Introducción Curso iOS

MVC

Comunicación por medio de delegación

Controlador

VistaModelo

Outlet

Target

Action

Delegate

Page 31: Introducción Curso iOS

MVC

Controlador

VistaModelo

Outlet

Target

Action

DelegateNotificaciones

Text

¿Qué pasa si el modelo tiene información actualizada y necesita que el controlador lo sepa?

Page 32: Introducción Curso iOS

Objective-CConceptos Básicos

Fast introduction

Page 33: Introducción Curso iOS

Objective-CObject-Oriented

Fast

Dynamic

Built on C

Page 34: Introducción Curso iOS

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

Page 35: Introducción Curso iOS

Clases en Objective-C

Page 36: Introducción Curso iOS

Interface Implementation

Clases en Objective-C

Page 37: Introducción Curso iOS

Dissecting an iOS class

Page 38: Introducción Curso iOS

Simple clase en iOS

Tweet.h Tweet.m

Interface Implementation

Page 39: Introducción Curso iOS

Simple clase en iOS

Tweet.h Tweet.m

Público Privado

Page 40: Introducción Curso iOS

#import <Foundation/Foundation.h>

Tweet.h Tweet.m

Page 41: Introducción Curso iOS

#import <Foundation/Foundation.h>

Page 42: Introducción Curso iOS

Properties

Tweet.h

Tweet.m

Page 43: Introducción Curso iOS

Properties - ¿Qué pasa detrás de escenas?

Tweet.h Tweet.m

Getter

Setter

Define setter and getter

Ya no tenemos que hacer esto

Page 44: Introducción Curso iOS

Properties

Tweet.h

Tweet.mApunta a un objeto tipo NSString

Page 45: Introducción Curso iOS

Todos los objectos en iOS viven en el heap

Tweet.h

Tweet.m

Page 46: Introducción Curso iOS

Garbage collection NO existe en iOS

Tweet.h

Tweet.m

Page 47: Introducción Curso iOS

Automatic Reference Counting - ARC

Tweet.h

Tweet.m

Page 48: Introducción Curso iOS

Automatic Reference Counting - ARC

Tweet.h

Tweet.mStrong - Strong Ownership

Page 49: Introducción Curso iOS

Nonatomic

Tweet.h

Tweet.mNonatomic

Page 50: Introducción Curso iOS

Properties pueden ser de diferentes tipos

Tweet.h

Tweet.m

Page 51: Introducción Curso iOS

Instance Methods y Class Methods

Ruby

MyClass.h

Objective-c

MyClass.m

Page 52: Introducción Curso iOS

Mi primer instance method

Tweet.h

Tweet.m

Instance method

Page 53: Introducción Curso iOS

Demo

Page 54: Introducción Curso iOS

Let’s code our class Tweet

Page 55: Introducción Curso iOS

MVP

Page 56: Introducción Curso iOS

Demo

Page 57: Introducción Curso iOS

MVP

Page 58: Introducción Curso iOS

Let’s code our demo Whereami

Page 59: Introducción Curso iOS

¿Autodidacta?

Page 60: Introducción Curso iOS

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

Page 61: Introducción Curso iOS

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

Page 62: Introducción Curso iOS

Preguntas

@maggit