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:
Post a Comment