Programación para iPhone
Fernando Rodríguez Romero       www.cocoaosx.com         frr@agbo.biz            @frr149
Cocoa
Categorías•Las categorías añaden métodos a clases pre-existentes.• Son muy utilizadas para añadir métodos a clases de las ...
Ejemplo de CategoríaLa clase NSArray dispone de métodos para acceder a elementos específicos delmismo, como objectAtIndex:,...
Ejemplo de Categoría•Se implementan de forma muy similar a una clase: •Un fichero de cabecera NSArray+Random.h •Un fichero d...
NSArray+Random.h#import <Foundation/Foundation.h>@interface NSArray (Random)- (id) objectAtRandom;@end
NSArray+Random.h#import <Foundation/Foundation.h> Clase pre-existente que vamos a                                         ...
NSArray+Random.h#import <Foundation/Foundation.h>@interface NSArray (Random)   Random   Nombre de nuestros añadidos- (id) ...
NSArray+Random.h#import <Foundation/Foundation.h>@interface NSArray (Random)- (id) objectAtRandom; - (id) objectAtRandom; ...
NSArray+Random.m#import "NSArray+Random.h"@implementation NSArray (Random)- (id) objectAtRandom {         int i, size;    ...
ProtocolosLos protocolos son listas de métodos que son compartidos por distintasclases.Un protocolo asegura que una clase ...
Implementar un ProtocoloEs muy común implementar un protocolo. La comunicación delegate funcionaimplementando un protocolo...
Implementar un ProtocoloPara indicar que nuestra clase implementa un protocolo, colocamos sunombre entre <> después de la ...
Definir un ProtocoloEs mucho menos común y se hace en un fichero de cabecera:@protocol Foo-(void) doSomething: (NSString *) ...
BloquesEn Objective C son “trozos” de código que se pueden guardar en variables,pasar como argumentos, devolver como resul...
Uso de los bloques1.Enumeración de colecciones2.Ordenación (el bloque se proporciona como el método de comparación)3.Notifi...
Sintaxis de los bloques1.Enumeración de colecciones2.Ordenación (el bloque se proporciona como el método de comparación)3....
Upcoming SlideShare
Loading in …5
×

Curso de programación iPhone: Cocoa-Touch

576 views

Published on

Curso de desarrollo iPhone: Librería de Clases Cocoa Touch. http://www.cocoaosx.com/cursos/desarrollo-iphone-curso-presencial/

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
576
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Curso de programación iPhone: Cocoa-Touch

    1. 1. Programación para iPhone
    2. 2. Fernando Rodríguez Romero www.cocoaosx.com frr@agbo.biz @frr149
    3. 3. Cocoa
    4. 4. Categorías•Las categorías añaden métodos a clases pre-existentes.• Son muy utilizadas para añadir métodos a clases de las frameworks, que al estarcompiladas y no tener acceso al código fuente, no serían modificables de otraforma.•Sólo pueden añadir métodos, no variables de instancia.•Se suelen llamar Clase+Funcionalidad. Por ejemplo, NSArray+Random.•Hay muchas categrías interesantes en GitHub: antes de ponerte a añadir cosas,mira en GitHub.
    5. 5. Ejemplo de CategoríaLa clase NSArray dispone de métodos para acceder a elementos específicos delmismo, como objectAtIndex:, pero ninguno para seleccionar uno al azar.Podríamos escribir una función específica para eso o repetir el código cada vez quehiciese falta.Una solución más elegante y orientada a objeto es añadirle a NSArray (y por lo tantoa NSMutableArray que desciende de él) el método objectAtRandom.
    6. 6. Ejemplo de Categoría•Se implementan de forma muy similar a una clase: •Un fichero de cabecera NSArray+Random.h •Un fichero de implementación NSArray+Random.m
    7. 7. NSArray+Random.h#import <Foundation/Foundation.h>@interface NSArray (Random)- (id) objectAtRandom;@end
    8. 8. NSArray+Random.h#import <Foundation/Foundation.h> Clase pre-existente que vamos a modificar@interface NSArrayNSArray (Random)- (id) objectAtRandom;@end
    9. 9. NSArray+Random.h#import <Foundation/Foundation.h>@interface NSArray (Random) Random Nombre de nuestros añadidos- (id) objectAtRandom;@end
    10. 10. NSArray+Random.h#import <Foundation/Foundation.h>@interface NSArray (Random)- (id) objectAtRandom; - (id) objectAtRandom; Lista de métodos que vamos a añadir.@end
    11. 11. NSArray+Random.m#import "NSArray+Random.h"@implementation NSArray (Random)- (id) objectAtRandom { int i, size; static unsigned int seed; // Las cabeceras que necesitan time(), srand() o random() // son incluídas por Foundation.h if (!seed) { seed = time(NULL); srand(seed); } size = [self count]; if (size) { i = random() % size ; return [self objectAtIndex: i]; }else { return nil; }}
    12. 12. ProtocolosLos protocolos son listas de métodos que son compartidos por distintasclases.Un protocolo asegura que una clase entiende una serie de mensajes (métodos)y podemos enviar cualquiera de esos mensajes sin riesgo y sin tener quecomprobar con respondsToSelector:.Los protocolos se definen en unfichero de cabecera. La implementación va acargo de cada una de las clases que cumplen con el protocolo.
    13. 13. Implementar un ProtocoloEs muy común implementar un protocolo. La comunicación delegate funcionaimplementando un protocolo.Por ejemplo, la vista UIWebView exige que su delegado (un controladornormalmente) implemente el protocolo UIWebViewDelegate.Dicho protocolo consiste en los siguientes métodos típicos de un delegado (did,will, should):- webView:shouldStartLoadWithRequest:navigationType:- webViewDidStartLoad:- webViewDidFinishLoad:- webView:didFailLoadWithError:
    14. 14. Implementar un ProtocoloPara indicar que nuestra clase implementa un protocolo, colocamos sunombre entre <> después de la clase de la que desciende:@interface ChiquipediaVC : UIViewController<UIWebViewDelegate> {}@property (retain) IBOutlet UIWebView *browser;@property (copy) NSString *chiquiPage;@end
    15. 15. Definir un ProtocoloEs mucho menos común y se hace en un fichero de cabecera:@protocol Foo-(void) doSomething: (NSString *) withThis;@optional-(id) getSomething;@required-(void) bar;@end
    16. 16. BloquesEn Objective C son “trozos” de código que se pueden guardar en variables,pasar como argumentos, devolver como resultado de un mensaje y ejecutarposteriormente.Además capturan de forma automática el entorno léxico en el que han sidocreados.
    17. 17. Uso de los bloques1.Enumeración de colecciones2.Ordenación (el bloque se proporciona como el método de comparación)3.Notificación (cuando tal cosa ocurra, ejecuta este bloque)4.Gestores de error (si ocurre un error mientras haces esto, ejecuta estebloque)5.Gestores de finalización (cuando termines de hacer esto, ejecuta estebloque)6.Animación de vistas7.Por último, tal vez la aplicación más importante en Cocoa: multitareamediante “Grand Dispatch Central” (GCD).
    18. 18. Sintaxis de los bloques1.Enumeración de colecciones2.Ordenación (el bloque se proporciona como el método de comparación)3.Notificación (cuando tal cosa ocurra, ejecuta este bloque)4.Gestores de error (si ocurre un error mientras haces esto, ejecuta estebloque)5.Gestores de finalización (cuando termines de hacer esto, ejecuta estebloque)6.Animación de vistas7.Por último, tal vez la aplicación más importante en Cocoa: multitareamediante “Grand Dispatch Central” (GCD).

    ×