Introducción Curso iOS

Post on 01-Jun-2015

1,762 views 0 download

Tags:

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