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

No comments: