Showing posts with label summertalks2011. Show all posts
Showing posts with label summertalks2011. Show all posts

June 14, 2011

summertalks 2011 @nearsoft day 2 session 1

Introducción a la programación en iOS //Marco teórico, mini-taller y GHUnit

tip: software para las pruebas de unidad:GHUnit

La mejor documentación está en inglés <-

Agenda

1. Marco teórico: Objective-C

2. Introducción a Xcode 3.x/4

3. Crear: HelloWord App

4. Mini-taller
GHUnit (Unit Test Framework)

Data types

int
double
char
long
short
unsigned (datatype)
BOOL
NSinteger
NSUinteger
NSUstring
NSUnumber
NSarray
NSDictionary
NSMutabledictionary
NSmutablearray

tip: se recomienda que se usen los que inicien con NS*

entre otros...

Declaración

NSString *emailAccount;
NSMutableArray *doctorNames;
BOOL isPrime;

*un apuntador es una referencia a un sector de memoria en el que está guardado un objeto

Objective-C: Metodos

1. -(return_type)methodName:(param1_type)param1_varName;
-(void)writeToFile;
+(NSString *)reverseString:(NSString) *)value;

*si yo instancío un objeto entonces puedo accesar a los métodos de ese objeto.

2. Accessors

[myObject writeToFile]; //myObject es la instancia de una clase

+
-

Objective-C: Clases

Interfaces e Implementaciones:

-En el archivo .h(header) se define la interfaz
-En el archivo .m se implementa el .h

.h

@interface classname:superclassname
{
//instance variables
}
+classMethod1;

Objective-C: Objetos

Importar clase
#import "Myclass.h"
Instanciación obheto
MyClass *myObject=[[MyClass alloc] init];
[myObject writeToFile];
[myObject release]; //libera la memoria

tip: Es muy importante el manejo de memoria, liberarla para evitar desbordamientos

->Xcode 3.x

1.Toolbar
2.Tree view
3.Resources
4.Muestra los elementos dentro del folder seleccionado en el tree view
5.Área de edición de código

*Interfase Builder

1. Windows View
2. Document Window
3. Inspector

->Xcode 4

1. Navigation bar
2. Editor/View Settings
3. Editor de codigo
4. Interface Builder<-manipulación de vistas ahora ya está integrado

IBOutlet and IBAction

-IBAction y IBOutlet son macros definidas para referirse a las variables y métodos que pueden ser contempladas en Interface Builder.

-IBAction: hace referencia a un método mediante un UI element.
-(IBAction)doSomething;
-(IBAction)doOtherThing:(id)sender;

-IBOutlet:hacen referencia directa a un UI element dentro del Interface builder (link entre codigo y UI elemento)

IBOutlet UILabel *myName;
IBOutlet UITTextField *theField; <-referencia directa al objeto

CREACIÓN de HelloWorld App con Xcode 4

De inicio se seleccionan las opciones para el nuevo proyecto (nombre, identificador, dispositivo) en view based application, una vez hecho esto, dónde se va a guardar la carpeta. El siguiente paso es comenzar el template.Se crean todas las carpetas que se deben utilizar, lo que "obliga" a ser ordenado. En el caso de este ejemplo se crea una carpeta de vistas. al igual que en C# el main es el método de entrada pero invoca el UIapplication.

Con command R se compila y corre la ejecución, y si todo se hace bien (pq no hemos hecho nada) se abre el simulador.

*ViewController controla la vista.

cual es el problema, que necesito? un text field, un botón y un label. <-todo es arrastrar y soltar

compilar, y aparecen, pero no hacen nada

*tip: cuando se asigna un ibaction por default se selecciona el touch down (de entre las posibles acciones o eventos:touch drag exit, touch drag inside, touch up inside, etc).

si quiero hacer referencia a un objeto, necesito un iboutlet, este se pone en viewcontroller

IBOutlet UILabel *myFirstLabel; <-IBOUtlet de tipo label

*tip por convención los nombres deben ser en inglés, iniciar con mayuscula, si son mas de dos palabras cada una inicia con mayuscula, se recomienda el libro code conventions

No se necesita IBOutlet para el botón porque solo va a responder a un tap (tip:NO un click... :P)

IBOutlet UITextField *
myFirstTextfield;

Necesitamos un IBAction, que realmente es un action, pero que va a ser detectado por un elemento en la vista:

-(IBAction)myFirstMethod;

dentro de los corchetes van las variables, fuera los métodos...

file´s owner= a quién pertenezco? quien me va a controlar?

*Seleccionar el files owner y arrastrar al textfield al label.click sostenido para enlazar los outlets de manera directa.

tip: si se hace el contrato en el .h y no se implementa en el .m, el programa truena :O <-debe definirse el método dentro de la implementación

@implementation

Se hace una concatenación y voilá. Hola jesús!


*disclaimer: find any errors? tell me about it

June 13, 2011

summertalks 2011 @nearsoft


Algunas notas de la plática del día de hoy:

Mercado para iOS Apps

Casos de Éxito

Programar para iOS, ¿qué necesito?

@Jesus Guerra/@Guerrix/jguerra@nearsoft.com

dev52 comunidad de desarrolladores

*Extraído de infografías de iCrossing

Mobile Operating System Market Share, Feb 2011

USA, Canadá, España, China, UK.

200 millones de disp con iOS/los iphone developers junto con los de android están a la alza

hasta dic 2010, 300 k apps and counting

"si quieren hacerse ricos programando para el iphone hagan juegos, y no uno, muchos"

Casos de éxito: angry birds, pages

Programar para iOs ¿Qué necesito?

1. Tener una Mac
2. Descargar el SDK
Xcode 4 (5 dólares)
Xcode 3 (gratis)

3. Aprender Objective-C <-rudo, tosco

Opcional

1. iPhone Developer Program (99 us/anual)
2. Leer guidelines de Apple



Objective-C

-influído por C, Smalltalk (primero en adoptar el leng orientado a objetos]
-paradigma orientado a objetos
-en 88 fue adoptado por nextstep
-lenguaje principal: macosx y ios
-sintaxis "verbose"
[myCollection insert:myObject atIndex:10];

-Introspectivo
[myObject respondsToSelector:@selector(foo)];
[myObject class];
-Documentación

Aprender Objective-C

1. Learning Objective-C 2 <-muy básico
2. Objective -C for Absolute Begginers <-más al grano
3. Beggining iPhone 4 Development
4. Beggining iPad Application Development

Apple Guidelines

1. Leer COMPLETO los Guidelines <-apple es muy especial a la hora de programar para el
2. Ventas iTunes/Appstore
3. Review/Publicación: 2 semanas
4. Cuidado con: nombre, iconos, manejo de errores (conexion/errores de App), contenido interno, funcionalidades

MVC <-el patrón es lo que rige la forma de programar, me permite tener una aplicación con el mismo ensamblado que corra en dos dipositivos totalmente diferentes

Alternativas

1. MonoTouch (SDK), soporta windows y linux, hay muchos tutoriales

De C# a Objective-C

US $399/anual

Versión student es gratis!

compilen en el simulador*

crux, chalkboard, oscilloscope <-aplicaciones en el appstore

2. PhoneGap

HTML5 encapsulado en una App Nativa
Gratis! sin soporte
Desde US$250/Anual

*Mal performance dado el HTML5

js->css->

*Malo: se debe manejar la memoria, no hay garbage collector

*Corona SDK

LUA -> Objective-C <--fácil
US 199/Anual
*Enfocado 100% a juegos 2D
*También para Android

*Jesús Guerra