SlideShare uma empresa Scribd logo
1 de 44
Brounie SA de CV
CURSO IOS
Arturo Jamaica García
Brounie SA de CV
OBJECTIVE C
Objective-C es un superconjunto de C.Todo el código C
es válido en Objective-C. 	

!
Toda la sintaxis para las operaciones no orientadas a
objetos son idénticas a las de C, mientras que la sintaxis de
las características orientadas a objetos es una
implementación similar a la mensajería de Smalltalk.
Brounie SA de CV
CREACIÓN DEL PROYECTO
Para empezar crea un proyecto nuevo File/New
Project y marcamos el template Empty Application.
Ponle el nombre que quieras al proyecto y asegurate
de marcar la opción deUse Automatic Reference
Counting y Include UnitTest
Brounie SA de CV
SINTAXIS BÁSICA
//numeros
int a = 1;
!
float f = 1.45f;
Brounie SA de CV
IF
//if
int resultado;
int n = 3;
if(n == 3){
resultado = 0;
}else if(n < 3){
resultado = -1;
}else{
resultado = 1;
}
Brounie SA de CV
FOR
//for
int sum = 0;
for(int i = 0; i < 10; i++){
sum = sum + i;
}
Brounie SA de CV
STRINGS
NSString *str = @"Hola mundo";
!
int n2 = 2;
NSString *str2 = [NSString
stringWithFormat:@"Hola mundo %d", n2];
!
NSString *strCmp1 = @"Hola mundo";
NSString *strCmp2 = @"Hola mundo";
NSString *strCmp3 = [NSString
stringWithFormat:@"Hola mundo"];
Brounie SA de CV
STRINGS
NSString *str = @"Hola mundo";
!
int n2 = 2;
NSString *str2 = [NSString
stringWithFormat:@"Hola mundo %d", n2];
!
NSString *strCmp1 = @"Hola mundo";
NSString *strCmp2 = @"Hola mundo";
NSString *strCmp3 = [NSString
stringWithFormat:@"Hola mundo"];
Brounie SA de CV
BOOLEAN
//booleans
BOOL yep = YES;
BOOL nop = NO;
Brounie SA de CV
COMENTARIO
// Comentario
/*
Comentario multilinea
*/
Brounie SA de CV
FUNDATIONS
FRAMEWORK
Brounie SA de CV
ARREGLOS
-(void)testArray {
NSArray* array =[NSArray arrayWithObjects:@"a", @"b", @"c", nil];
for(NSString *objeto in array){
NSLog(@"obj %@", objeto);
}
NSMutableArray* mutable = [NSMutableArray array];
[mutable addObject:@"a"];
[mutable addObject:[NSNumber numberWithInt:2]];
[mutable addObject:[NSNumber numberWithFloat:3.14159]];
!
[mutable removeObjectAtIndex:2];
!
}
Brounie SA de CV
DICTIONARY
-(void)testDictionary {
NSDictionary* dictionary = [NSDictionary
dictionaryWithObjectsAndKeys:
@"Valor 1", @"Clave 1",
[NSNumber numberWithFloat:2.0], @"Clave 2",
nil];
NSMutableDictionary* mutableDict = [NSMutableDictionary dictionary];
[mutableDict setObject:@"Un Valor" forKey:@"clave1"];
[mutableDict setObject:@"Otro Valor" forKey:@"clave1"];
[mutableDict setObject:@"Otro Valor" forKey:@"clave2"];
}
Brounie SA de CV
CLASES
Brounie SA de CV
MENSAJES
[objeto metodo];
[objeto metodoConParametro1:param1];
!
returnValue = [objeto metodoConParametro1:param1
yParametro2:param2];
Brounie SA de CV
NSString *str = [NSString
stringWithFormat:@"Hola mundo"];
Brounie SA de CV
ACCESORS
// Sintaxis tradicional
[obj setName:@"value"];
name = [obje name];
!
// Sintaxis . (Objective-C 2.0)
obj.name = @"value"
name = obj.name
Brounie SA de CV
ACCESORS
// Sintaxis tradicional
[obj setName:@"value"];
name = [obje name];
!
// Sintaxis . (Objective-C 2.0)
obj.name = @"value"
name = obj.name
Brounie SA de CV
CREACIÓN
NSString* myString = [NSString string];
NSString* myString = [[NSString alloc] init];
NSNumber* value = [[NSNumber alloc]
initWithFloat:1.0];
Brounie SA de CV
*CREAR CLASES
Brounie SA de CV
@interface ExampleClass : NSObject {
//variables
NSString *var1;
}
//Métodos
- (NSString*) method1;
- (NSString*) method2;
@end
#import "ExampleClass.h"
@implementation ExampleClass
- (NSString*) method1 {
...
}
- (NSString*) method2 {
...
}
@end
Archivo ExampleClass.h
Archivo ExampleClass.m
Brounie SA de CV
- (id) init {
if (self = [super init]) {
//Código de inicialización
!
}
return self;
}
Brounie SA de CV
PROPIEDADE
@property (strong, nonatomic) NSString *variable;
@syntheisze variable;
En la interfaz se definen:
En la implementación tenemos que decirle que queremos que
genere automáticamente los métodos
Brounie SA de CV
EJERCICIO 1
Suma los números del 1 al 100
-(void)testEj1 {
int sum = 0;
for(int i = 1; i <= 100; i++){
sum = sum + i;
}
}
Brounie SA de CV
EJERCICIO 2
Suma los números pares del 1 al 100 (Tip: El operador
del resto entero es %)
-(void)testEj2 {
int sum = 0;
for(int i = 1; i <= 100; i++){
if(i % 2 == 0){
sum = sum + i;
}
}
}
Brounie SA de CV
EJERCICIO 3
Crea una clase persona con una propiedad nombre y
otra apellido apellido y con un método
nombreCompleto.
@interface Persona : NSObject
!
@property (strong, nonatomic) NSString *nombre;
@property (strong, nonatomic) NSString *apellido;
!
-(NSString *)nombreCompleto;
!
@end
Brounie SA de CV
EJERCICIO 3
@implementation Persona
!
@synthesize nombre, apellido;
!
-(NSString *)nombreCompleto {
NSString *nombreCompleto = [NSString
stringWithFormat:@"%@ %@", self.nombre, self.apellido];
return nombreCompleto;
}
!
@end
Brounie SA de CV
Persona *persona = [[Persona alloc] init];
persona.nombre = @"Luke";
persona.apellido = @"Skywalker";
!
Brounie SA de CV
MVC
Brounie SA de CV
MVC
Brounie SA de CV
ModeloVista Controlador (MVC) es un patrón de
arquitectura de software que separa los componentes de
una aplicación: datos, interfaz de usuario y lógica de negocio.	

•Model : Datos de la aplicación.	

•View : Interfaz de usuario.	

•Controller : Lógica de negocio, conecta el modelo con la
vista.	

MVC
Brounie SA de CV
MVC
MVC permite maximizar la reusabilidad. Por ejemplo, la clase que pinta un botón en la
pantalla, se podría reutilizar en todos los botones que tiene la aplicación siempre y
cuando esa sea su única responsabilidad. Si además de pintar un botón en la pantalla
tuviese una lógica que se debe ejecutar al pulsar el botón no se podría reutilizar.
Obligándonos a repetir el código que pinta un botón en la pantalla para cada uno de
los botones de nuestra aplicación.	

En términos de una aplicación iOS:	

• El Modelo serán normalmente clases simples que extiendan de NSObject o
entidades de Core Data (ORM).	

• LaVista, la interfaz de usuario, se puede definir utilizando el Interface Builder o
directamente en código.	

• Los controladores pueden ser cualquier clase. UIKit provee algunos controladores
genéricos como por ejemplo el UIViewController o UITableViewController.	

!
Brounie SA de CV
OUTLETS Y ACTIONS
Si definimos la interfaz de usuario mediante el Storyboard debemos
conectarla a el código del controlador. Para conectar la vista con el
controlador se utilizan unas propiedades especiales que se llaman
Outlets. En el otro sentido, las interacción del usuario con los
elementos de la vista puede disparar la ejecución ciertos métodos
llamados Actions. Por ejemplo se puede configurar una Action para que
se ejecute cuando el usuario pulsa un botón.
Brounie SA de CV
UIVIEWCONTROLLER
El controlador por defecto que crea la plantilla extiende de UIViewController y
tiene los métodos:
• viewDidLoad : Este método se llama cuando se ha terminado de cargar
• viewDidUnload : Este método se llama cuando la vista del controlador va a ser
liberada de la memoria. Aquí es importante que pongamos a null las propiedades
que tenga el controlador para que no se produzcan fugas de memoria.
• shouldAutorotateToInterfaceOrientation: : Este método es que le indica a
la vista si debe de rotar cuando el usuario rote el dispositivo.
Brounie SA de CV
OUTLETS
@property (nonatomic, retain) IBOutlet UIButton *miBoton;
ACTION
- (IBAction)click:(id)sender;
- (IBAction)click {
label.text = @"Hola curso iOS";
}
Brounie SA de CV
TABLAS
Brounie SA de CV
UITABLEVIEW
La vista de tabla (UITableView) es el componente central en muchas
aplicaciones. Es un elemento con muchas opciones, es importante que
aprendamos a utilizarlas correctamente.	

!
Las clases que intervienen a la hora de representar una tabla son:	

• UITableView : La tabla en sí	

• UITableViewCell : Cada una de las celdas de una tabla	

!
Para empezar a trabajar con las tablas, vamos a crear un nuevo
controlador que llamaremos CTControllerView y haremos que sea
una subclase de UITableViewController.
Brounie SA de CV
UITABLEVIEW
Viendo la implementación que nos creó por defecto Xcode, vemos que hay muchos
métodos propios de un controlador de tabla. 
!
Estos métodos en realidad son de los protocolosUITableViewDelegate y
UITableViewDataSource. El delegate tiene información de cómo se tiene que
comportar la tabla, por ejemplo el tamaño de las celdas, el método que se ejecuta
cuando se selecciona una celda, etc. Por otro lado, el datasource tiene información del
contenido que tiene que mostrar la tabla, por ejemplo el número de celdas, el número de
secciones, el contenido de las celdas, etc. Revisa la documentación de las dos clases
para que veas los métodos que tienen.
Observando la documentación vemos que los únicos métodos que son requeridos son:
• tableView:cellForRowAtIndexPath : Devuelve la celda configurada.
• tableView:numberOfRowsInSection : Devuelve el número de celdas que hay en
cada sección. Por defecto hay una única sección.
Brounie SA de CV
CELL (PATRÓN)
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil){
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Object *objeto = [arreglo.data objectAtIndex: indexPath.row];
cell.textLabel.text = objeto.nombre;
return cell;
}
Brounie SA de CV
MAPAS
Brounie SA de CV
EJEMPLO
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
!
@interface MapViewController : UIViewController
<MKMapViewDelegate>
!
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
!
@end
Brounie SA de CV
EJEMPLO
CLLocationCoordinate2D center;
center.latitude = 28.268611;
center.longitude = -16.605556;
!
MKCoordinateRegion region;
region.center = center;
region.span.latitudeDelta = 1;
region.span.longitudeDelta = 1;
!
[self.mapView setRegion:region animated:YES];
self.mapView.showsUserLocation = YES;
Brounie SA de CV
RECURSOS
• https://developer.apple.com/devcenter/ios/
• http://itunes.apple.com/itunes-u/ipad-iphone-
application-development/id473757255
• http://www.raywenderlich.com/tutorials
Brounie SA de CV
GRACIAS
Brounie SA de CV

Mais conteúdo relacionado

Mais procurados

Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalMediaglobe Innova
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguajeLaura Folgado Galache
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java scriptRenny Batista
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...David Zapateria Besteiro
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpAna Ruth G H
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguajeLaura Folgado Galache
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...David Zapateria Besteiro
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basicYesenia Bautista
 
comandos
comandoscomandos
comandosarecerv
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos cCarlos
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE Cflaquita_dany
 
El lenguaje de programacion c++ prev
El lenguaje de programacion c++ prevEl lenguaje de programacion c++ prev
El lenguaje de programacion c++ prevjtk1
 

Mais procurados (20)

Mac
MacMac
Mac
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en Drupal
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje
 
php Fundamentos
php Fundamentos php Fundamentos
php Fundamentos
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java script
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
 
Comandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# SharpComandos de Raptor, Java y C# Sharp
Comandos de Raptor, Java y C# Sharp
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basic
 
Programación Java
Programación JavaProgramación Java
Programación Java
 
comandos
comandoscomandos
comandos
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
Variables en php
Variables en phpVariables en php
Variables en php
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
El lenguaje de programacion c++ prev
El lenguaje de programacion c++ prevEl lenguaje de programacion c++ prev
El lenguaje de programacion c++ prev
 
Tutorial de php
Tutorial de phpTutorial de php
Tutorial de php
 

Destaque

Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Generadores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneradores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneXus
 
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraNeurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraGeneXus
 
0041 rest web_services_en_genexus
0041 rest web_services_en_genexus0041 rest web_services_en_genexus
0041 rest web_services_en_genexusGeneXus
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoGeneXus
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...GeneXus
 
Swift Programming Basics (Part I)
Swift Programming Basics (Part I)Swift Programming Basics (Part I)
Swift Programming Basics (Part I)Alberto Pacheco
 
“Capitalismo y esquizofrenia” gilles deleuze y félix guattari.
“Capitalismo y esquizofrenia”  gilles deleuze y félix guattari.“Capitalismo y esquizofrenia”  gilles deleuze y félix guattari.
“Capitalismo y esquizofrenia” gilles deleuze y félix guattari.Eleonora_que_ignora
 
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!GeneXus
 
Metodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPMetodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPejordi
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesMicael Gallego
 

Destaque (20)

Tutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación SwiftTutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación Swift
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
Hola Swift
Hola SwiftHola Swift
Hola Swift
 
Diploma google-fullstack
Diploma google-fullstackDiploma google-fullstack
Diploma google-fullstack
 
Diploma Backend Developer
Diploma Backend DeveloperDiploma Backend Developer
Diploma Backend Developer
 
Generadores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia MurialdoGeneradores Web en Salto - Claudia Murialdo
Generadores Web en Salto - Claudia Murialdo
 
Diploma programacion-android
Diploma programacion-androidDiploma programacion-android
Diploma programacion-android
 
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo TejeraNeurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
Neurociencia aplicada al desarrollo con GeneXus - Gustavo Tejera
 
0041 rest web_services_en_genexus
0041 rest web_services_en_genexus0041 rest web_services_en_genexus
0041 rest web_services_en_genexus
 
Swift
SwiftSwift
Swift
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto (...
 
Swift Programming Basics (Part I)
Swift Programming Basics (Part I)Swift Programming Basics (Part I)
Swift Programming Basics (Part I)
 
El rizoma deleuze (jaime reyes-f)
El rizoma   deleuze (jaime reyes-f)El rizoma   deleuze (jaime reyes-f)
El rizoma deleuze (jaime reyes-f)
 
“Capitalismo y esquizofrenia” gilles deleuze y félix guattari.
“Capitalismo y esquizofrenia”  gilles deleuze y félix guattari.“Capitalismo y esquizofrenia”  gilles deleuze y félix guattari.
“Capitalismo y esquizofrenia” gilles deleuze y félix guattari.
 
GeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel SimonetGeneXus Apps UI / UX Kit - Gabriel Simonet
GeneXus Apps UI / UX Kit - Gabriel Simonet
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!
 
Metodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XPMetodologías de desarrollo ágiles: Scrum, XP
Metodologías de desarrollo ágiles: Scrum, XP
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
 
Tecnologias para el desarrollo Web
Tecnologias para el desarrollo WebTecnologias para el desarrollo Web
Tecnologias para el desarrollo Web
 

Semelhante a Curso iOS

Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en accessssuser3a82fb
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPablo Aguilera
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7jcfarit
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 

Semelhante a Curso iOS (20)

DAM-S7.pptx
DAM-S7.pptxDAM-S7.pptx
DAM-S7.pptx
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Visual basic .NET
Visual basic .NETVisual basic .NET
Visual basic .NET
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
Clase numero 6
Clase numero 6Clase numero 6
Clase numero 6
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
 
Mvc
MvcMvc
Mvc
 
ejemplo de diseño
ejemplo de diseñoejemplo de diseño
ejemplo de diseño
 
ABI-Box
ABI-BoxABI-Box
ABI-Box
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)Ejemplo bbdd sqlite (android)
Ejemplo bbdd sqlite (android)
 
My Sql A C#
My Sql A C#My Sql A C#
My Sql A C#
 
My Sql A C#
My Sql A C#My Sql A C#
My Sql A C#
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 

Mais de Platzi

Presentación Reporte de Impacto Platzi 2018
Presentación Reporte de Impacto Platzi 2018Presentación Reporte de Impacto Platzi 2018
Presentación Reporte de Impacto Platzi 2018Platzi
 
Inbound Marketing
Inbound MarketingInbound Marketing
Inbound MarketingPlatzi
 
Qué es Growth Hacking
Qué es Growth HackingQué es Growth Hacking
Qué es Growth HackingPlatzi
 
¿Qué es el Seo?
¿Qué es el Seo?¿Qué es el Seo?
¿Qué es el Seo?Platzi
 
Cómo hacer Link Building
Cómo hacer Link Building Cómo hacer Link Building
Cómo hacer Link Building Platzi
 
Cómo hacer Local SEO
Cómo hacer Local SEOCómo hacer Local SEO
Cómo hacer Local SEOPlatzi
 
Curso SEO
Curso SEOCurso SEO
Curso SEOPlatzi
 
Inbound marketing
Inbound marketingInbound marketing
Inbound marketingPlatzi
 
Curso IOS - Intro2
Curso IOS - Intro2Curso IOS - Intro2
Curso IOS - Intro2Platzi
 
Curso IOS - Intro
Curso IOS - IntroCurso IOS - Intro
Curso IOS - IntroPlatzi
 
Curso Android - Clase 6
Curso Android - Clase 6Curso Android - Clase 6
Curso Android - Clase 6Platzi
 
Curso Android - Clase 5
Curso Android - Clase 5 Curso Android - Clase 5
Curso Android - Clase 5 Platzi
 
Curso Android - Clase 4
Curso Android - Clase 4 Curso Android - Clase 4
Curso Android - Clase 4 Platzi
 
Curso Android - Intro, almacenamiento y mapas - Clase 3
Curso Android - Intro, almacenamiento y mapas - Clase 3Curso Android - Intro, almacenamiento y mapas - Clase 3
Curso Android - Intro, almacenamiento y mapas - Clase 3Platzi
 
Curso Android - Listas, grids y personalizacion - Clase 2
Curso Android - Listas, grids y personalizacion - Clase 2Curso Android - Listas, grids y personalizacion - Clase 2
Curso Android - Listas, grids y personalizacion - Clase 2Platzi
 
Introducción a Android - clase 1
Introducción a Android - clase 1Introducción a Android - clase 1
Introducción a Android - clase 1Platzi
 

Mais de Platzi (16)

Presentación Reporte de Impacto Platzi 2018
Presentación Reporte de Impacto Platzi 2018Presentación Reporte de Impacto Platzi 2018
Presentación Reporte de Impacto Platzi 2018
 
Inbound Marketing
Inbound MarketingInbound Marketing
Inbound Marketing
 
Qué es Growth Hacking
Qué es Growth HackingQué es Growth Hacking
Qué es Growth Hacking
 
¿Qué es el Seo?
¿Qué es el Seo?¿Qué es el Seo?
¿Qué es el Seo?
 
Cómo hacer Link Building
Cómo hacer Link Building Cómo hacer Link Building
Cómo hacer Link Building
 
Cómo hacer Local SEO
Cómo hacer Local SEOCómo hacer Local SEO
Cómo hacer Local SEO
 
Curso SEO
Curso SEOCurso SEO
Curso SEO
 
Inbound marketing
Inbound marketingInbound marketing
Inbound marketing
 
Curso IOS - Intro2
Curso IOS - Intro2Curso IOS - Intro2
Curso IOS - Intro2
 
Curso IOS - Intro
Curso IOS - IntroCurso IOS - Intro
Curso IOS - Intro
 
Curso Android - Clase 6
Curso Android - Clase 6Curso Android - Clase 6
Curso Android - Clase 6
 
Curso Android - Clase 5
Curso Android - Clase 5 Curso Android - Clase 5
Curso Android - Clase 5
 
Curso Android - Clase 4
Curso Android - Clase 4 Curso Android - Clase 4
Curso Android - Clase 4
 
Curso Android - Intro, almacenamiento y mapas - Clase 3
Curso Android - Intro, almacenamiento y mapas - Clase 3Curso Android - Intro, almacenamiento y mapas - Clase 3
Curso Android - Intro, almacenamiento y mapas - Clase 3
 
Curso Android - Listas, grids y personalizacion - Clase 2
Curso Android - Listas, grids y personalizacion - Clase 2Curso Android - Listas, grids y personalizacion - Clase 2
Curso Android - Listas, grids y personalizacion - Clase 2
 
Introducción a Android - clase 1
Introducción a Android - clase 1Introducción a Android - clase 1
Introducción a Android - clase 1
 

Último

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 

Último (20)

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 

Curso iOS

  • 1. Brounie SA de CV CURSO IOS Arturo Jamaica García
  • 2. Brounie SA de CV OBJECTIVE C Objective-C es un superconjunto de C.Todo el código C es válido en Objective-C. ! Toda la sintaxis para las operaciones no orientadas a objetos son idénticas a las de C, mientras que la sintaxis de las características orientadas a objetos es una implementación similar a la mensajería de Smalltalk.
  • 3. Brounie SA de CV CREACIÓN DEL PROYECTO Para empezar crea un proyecto nuevo File/New Project y marcamos el template Empty Application. Ponle el nombre que quieras al proyecto y asegurate de marcar la opción deUse Automatic Reference Counting y Include UnitTest
  • 4. Brounie SA de CV SINTAXIS BÁSICA //numeros int a = 1; ! float f = 1.45f;
  • 5. Brounie SA de CV IF //if int resultado; int n = 3; if(n == 3){ resultado = 0; }else if(n < 3){ resultado = -1; }else{ resultado = 1; }
  • 6. Brounie SA de CV FOR //for int sum = 0; for(int i = 0; i < 10; i++){ sum = sum + i; }
  • 7. Brounie SA de CV STRINGS NSString *str = @"Hola mundo"; ! int n2 = 2; NSString *str2 = [NSString stringWithFormat:@"Hola mundo %d", n2]; ! NSString *strCmp1 = @"Hola mundo"; NSString *strCmp2 = @"Hola mundo"; NSString *strCmp3 = [NSString stringWithFormat:@"Hola mundo"];
  • 8. Brounie SA de CV STRINGS NSString *str = @"Hola mundo"; ! int n2 = 2; NSString *str2 = [NSString stringWithFormat:@"Hola mundo %d", n2]; ! NSString *strCmp1 = @"Hola mundo"; NSString *strCmp2 = @"Hola mundo"; NSString *strCmp3 = [NSString stringWithFormat:@"Hola mundo"];
  • 9. Brounie SA de CV BOOLEAN //booleans BOOL yep = YES; BOOL nop = NO;
  • 10. Brounie SA de CV COMENTARIO // Comentario /* Comentario multilinea */
  • 11. Brounie SA de CV FUNDATIONS FRAMEWORK
  • 12. Brounie SA de CV ARREGLOS -(void)testArray { NSArray* array =[NSArray arrayWithObjects:@"a", @"b", @"c", nil]; for(NSString *objeto in array){ NSLog(@"obj %@", objeto); } NSMutableArray* mutable = [NSMutableArray array]; [mutable addObject:@"a"]; [mutable addObject:[NSNumber numberWithInt:2]]; [mutable addObject:[NSNumber numberWithFloat:3.14159]]; ! [mutable removeObjectAtIndex:2]; ! }
  • 13. Brounie SA de CV DICTIONARY -(void)testDictionary { NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"Valor 1", @"Clave 1", [NSNumber numberWithFloat:2.0], @"Clave 2", nil]; NSMutableDictionary* mutableDict = [NSMutableDictionary dictionary]; [mutableDict setObject:@"Un Valor" forKey:@"clave1"]; [mutableDict setObject:@"Otro Valor" forKey:@"clave1"]; [mutableDict setObject:@"Otro Valor" forKey:@"clave2"]; }
  • 14. Brounie SA de CV CLASES
  • 15. Brounie SA de CV MENSAJES [objeto metodo]; [objeto metodoConParametro1:param1]; ! returnValue = [objeto metodoConParametro1:param1 yParametro2:param2];
  • 16. Brounie SA de CV NSString *str = [NSString stringWithFormat:@"Hola mundo"];
  • 17. Brounie SA de CV ACCESORS // Sintaxis tradicional [obj setName:@"value"]; name = [obje name]; ! // Sintaxis . (Objective-C 2.0) obj.name = @"value" name = obj.name
  • 18. Brounie SA de CV ACCESORS // Sintaxis tradicional [obj setName:@"value"]; name = [obje name]; ! // Sintaxis . (Objective-C 2.0) obj.name = @"value" name = obj.name
  • 19. Brounie SA de CV CREACIÓN NSString* myString = [NSString string]; NSString* myString = [[NSString alloc] init]; NSNumber* value = [[NSNumber alloc] initWithFloat:1.0];
  • 20. Brounie SA de CV *CREAR CLASES
  • 21. Brounie SA de CV @interface ExampleClass : NSObject { //variables NSString *var1; } //Métodos - (NSString*) method1; - (NSString*) method2; @end #import "ExampleClass.h" @implementation ExampleClass - (NSString*) method1 { ... } - (NSString*) method2 { ... } @end Archivo ExampleClass.h Archivo ExampleClass.m
  • 22. Brounie SA de CV - (id) init { if (self = [super init]) { //Código de inicialización ! } return self; }
  • 23. Brounie SA de CV PROPIEDADE @property (strong, nonatomic) NSString *variable; @syntheisze variable; En la interfaz se definen: En la implementación tenemos que decirle que queremos que genere automáticamente los métodos
  • 24. Brounie SA de CV EJERCICIO 1 Suma los números del 1 al 100 -(void)testEj1 { int sum = 0; for(int i = 1; i <= 100; i++){ sum = sum + i; } }
  • 25. Brounie SA de CV EJERCICIO 2 Suma los números pares del 1 al 100 (Tip: El operador del resto entero es %) -(void)testEj2 { int sum = 0; for(int i = 1; i <= 100; i++){ if(i % 2 == 0){ sum = sum + i; } } }
  • 26. Brounie SA de CV EJERCICIO 3 Crea una clase persona con una propiedad nombre y otra apellido apellido y con un método nombreCompleto. @interface Persona : NSObject ! @property (strong, nonatomic) NSString *nombre; @property (strong, nonatomic) NSString *apellido; ! -(NSString *)nombreCompleto; ! @end
  • 27. Brounie SA de CV EJERCICIO 3 @implementation Persona ! @synthesize nombre, apellido; ! -(NSString *)nombreCompleto { NSString *nombreCompleto = [NSString stringWithFormat:@"%@ %@", self.nombre, self.apellido]; return nombreCompleto; } ! @end
  • 28. Brounie SA de CV Persona *persona = [[Persona alloc] init]; persona.nombre = @"Luke"; persona.apellido = @"Skywalker"; !
  • 29. Brounie SA de CV MVC
  • 30. Brounie SA de CV MVC
  • 31. Brounie SA de CV ModeloVista Controlador (MVC) es un patrón de arquitectura de software que separa los componentes de una aplicación: datos, interfaz de usuario y lógica de negocio. •Model : Datos de la aplicación. •View : Interfaz de usuario. •Controller : Lógica de negocio, conecta el modelo con la vista. MVC
  • 32. Brounie SA de CV MVC MVC permite maximizar la reusabilidad. Por ejemplo, la clase que pinta un botón en la pantalla, se podría reutilizar en todos los botones que tiene la aplicación siempre y cuando esa sea su única responsabilidad. Si además de pintar un botón en la pantalla tuviese una lógica que se debe ejecutar al pulsar el botón no se podría reutilizar. Obligándonos a repetir el código que pinta un botón en la pantalla para cada uno de los botones de nuestra aplicación. En términos de una aplicación iOS: • El Modelo serán normalmente clases simples que extiendan de NSObject o entidades de Core Data (ORM). • LaVista, la interfaz de usuario, se puede definir utilizando el Interface Builder o directamente en código. • Los controladores pueden ser cualquier clase. UIKit provee algunos controladores genéricos como por ejemplo el UIViewController o UITableViewController. !
  • 33. Brounie SA de CV OUTLETS Y ACTIONS Si definimos la interfaz de usuario mediante el Storyboard debemos conectarla a el código del controlador. Para conectar la vista con el controlador se utilizan unas propiedades especiales que se llaman Outlets. En el otro sentido, las interacción del usuario con los elementos de la vista puede disparar la ejecución ciertos métodos llamados Actions. Por ejemplo se puede configurar una Action para que se ejecute cuando el usuario pulsa un botón.
  • 34. Brounie SA de CV UIVIEWCONTROLLER El controlador por defecto que crea la plantilla extiende de UIViewController y tiene los métodos: • viewDidLoad : Este método se llama cuando se ha terminado de cargar • viewDidUnload : Este método se llama cuando la vista del controlador va a ser liberada de la memoria. Aquí es importante que pongamos a null las propiedades que tenga el controlador para que no se produzcan fugas de memoria. • shouldAutorotateToInterfaceOrientation: : Este método es que le indica a la vista si debe de rotar cuando el usuario rote el dispositivo.
  • 35. Brounie SA de CV OUTLETS @property (nonatomic, retain) IBOutlet UIButton *miBoton; ACTION - (IBAction)click:(id)sender; - (IBAction)click { label.text = @"Hola curso iOS"; }
  • 36. Brounie SA de CV TABLAS
  • 37. Brounie SA de CV UITABLEVIEW La vista de tabla (UITableView) es el componente central en muchas aplicaciones. Es un elemento con muchas opciones, es importante que aprendamos a utilizarlas correctamente. ! Las clases que intervienen a la hora de representar una tabla son: • UITableView : La tabla en sí • UITableViewCell : Cada una de las celdas de una tabla ! Para empezar a trabajar con las tablas, vamos a crear un nuevo controlador que llamaremos CTControllerView y haremos que sea una subclase de UITableViewController.
  • 38. Brounie SA de CV UITABLEVIEW Viendo la implementación que nos creó por defecto Xcode, vemos que hay muchos métodos propios de un controlador de tabla. ! Estos métodos en realidad son de los protocolosUITableViewDelegate y UITableViewDataSource. El delegate tiene información de cómo se tiene que comportar la tabla, por ejemplo el tamaño de las celdas, el método que se ejecuta cuando se selecciona una celda, etc. Por otro lado, el datasource tiene información del contenido que tiene que mostrar la tabla, por ejemplo el número de celdas, el número de secciones, el contenido de las celdas, etc. Revisa la documentación de las dos clases para que veas los métodos que tienen. Observando la documentación vemos que los únicos métodos que son requeridos son: • tableView:cellForRowAtIndexPath : Devuelve la celda configurada. • tableView:numberOfRowsInSection : Devuelve el número de celdas que hay en cada sección. Por defecto hay una única sección.
  • 39. Brounie SA de CV CELL (PATRÓN) - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell == nil){ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } Object *objeto = [arreglo.data objectAtIndex: indexPath.row]; cell.textLabel.text = objeto.nombre; return cell; }
  • 40. Brounie SA de CV MAPAS
  • 41. Brounie SA de CV EJEMPLO #import <UIKit/UIKit.h> #import <MapKit/MapKit.h> ! @interface MapViewController : UIViewController <MKMapViewDelegate> ! @property (strong, nonatomic) IBOutlet MKMapView *mapView; ! @end
  • 42. Brounie SA de CV EJEMPLO CLLocationCoordinate2D center; center.latitude = 28.268611; center.longitude = -16.605556; ! MKCoordinateRegion region; region.center = center; region.span.latitudeDelta = 1; region.span.longitudeDelta = 1; ! [self.mapView setRegion:region animated:YES]; self.mapView.showsUserLocation = YES;
  • 43. Brounie SA de CV RECURSOS • https://developer.apple.com/devcenter/ios/ • http://itunes.apple.com/itunes-u/ipad-iphone- application-development/id473757255 • http://www.raywenderlich.com/tutorials
  • 44. Brounie SA de CV GRACIAS Brounie SA de CV