Este documento proporciona una introducción a Objective-C, incluyendo su sintaxis básica como números, cadenas, condicionales y bucles. También explica conceptos como clases, propiedades, métodos y mensajes. Por último, presenta brevemente patrones como MVC y el uso de tablas y mapas.
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;
}
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";
!
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.
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.