SlideShare ist ein Scribd-Unternehmen logo
1 von 18
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 frameworks, que al estar
compiladas y no tener acceso al código fuente, no serían modificables de otra
forma.
•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.
Ejemplo de Categoría
La clase NSArray dispone de métodos para acceder a elementos específicos del
mismo, 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 que
hiciese falta.


Una solución más elegante y orientada a objeto es añadirle a NSArray (y por lo tanto
a NSMutableArray que desciende de él) el método objectAtRandom.
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
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
                                             modificar

@interface NSArrayNSArray
                   (Random)

- (id) objectAtRandom;


@end
NSArray+Random.h
#import <Foundation/Foundation.h>


@interface NSArray (Random)   Random   Nombre de nuestros añadidos

- (id) objectAtRandom;


@end
NSArray+Random.h
#import <Foundation/Foundation.h>


@interface NSArray (Random)

- (id) objectAtRandom;
 - (id) objectAtRandom;             Lista de métodos que vamos a añadir.


@end
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;

         }


}
Protocolos
Los protocolos son listas de métodos que son compartidos por distintas
clases.

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 que
comprobar con respondsToSelector:.


Los protocolos se definen en unfichero de cabecera. La implementación va a
cargo de cada una de las clases que cumplen con el protocolo.
Implementar un Protocolo
Es muy común implementar un protocolo. La comunicación delegate funciona
implementando un protocolo.

Por ejemplo, la vista UIWebView exige que su delegado (un controlador
normalmente) 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:
Implementar un Protocolo
Para indicar que nuestra clase implementa un protocolo, colocamos su
nombre entre <> después de la clase de la que desciende:


@interface ChiquipediaVC : UIViewController<UIWebViewDelegate> {

}

@property (retain) IBOutlet UIWebView *browser;
@property (copy) NSString *chiquiPage;

@end
Definir un Protocolo
Es 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
Bloques

En Objective C son “trozos” de código que se pueden guardar en variables,
pasar como argumentos, devolver como resultado de un mensaje y ejecutar
posteriormente.

Además capturan de forma automática el entorno léxico en el que han sido
creados.
Uso de los bloques
1.Enumeración de colecciones
2.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 este
bloque)
5.Gestores de finalización (cuando termines de hacer esto, ejecuta este
bloque)
6.Animación de vistas
7.Por último, tal vez la aplicación más importante en Cocoa: multitarea
mediante “Grand Dispatch Central” (GCD).
Sintaxis de los bloques
1.Enumeración de colecciones
2.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 este
bloque)
5.Gestores de finalización (cuando termines de hacer esto, ejecuta este
bloque)
6.Animación de vistas
7.Por último, tal vez la aplicación más importante en Cocoa: multitarea
mediante “Grand Dispatch Central” (GCD).

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

S6-POO-3.2 Contenedores Especiales
S6-POO-3.2 Contenedores EspecialesS6-POO-3.2 Contenedores Especiales
S6-POO-3.2 Contenedores Especiales
 
Constructores
ConstructoresConstructores
Constructores
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.
 
S6-Contenedores
S6-ContenedoresS6-Contenedores
S6-Contenedores
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic Club
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
 
Javascript - 2014
Javascript - 2014Javascript - 2014
Javascript - 2014
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadas
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 
Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86 Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
Tema 8 polimorfismo
Tema 8 polimorfismoTema 8 polimorfismo
Tema 8 polimorfismo
 
Programar java
Programar javaProgramar java
Programar java
 
Documento6
Documento6Documento6
Documento6
 
Serialización de Objetos Java
Serialización de Objetos Java Serialización de Objetos Java
Serialización de Objetos Java
 
INSTANCIAS Y CONSTRUCTORES EN JAVA
INSTANCIAS Y CONSTRUCTORES EN JAVAINSTANCIAS Y CONSTRUCTORES EN JAVA
INSTANCIAS Y CONSTRUCTORES EN JAVA
 
Serialización de objetos en java
Serialización de objetos en javaSerialización de objetos en java
Serialización de objetos en java
 

Ähnlich wie Curso de programación iPhone: Cocoa-Touch

Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Java1-Intro.pptbbjjjfdzvñutfdnmj habitación
Java1-Intro.pptbbjjjfdzvñutfdnmj habitaciónJava1-Intro.pptbbjjjfdzvñutfdnmj habitación
Java1-Intro.pptbbjjjfdzvñutfdnmj habitaciónFabiolaCastilloCanci
 
Java introduccion conceptos basicos una mira
Java introduccion conceptos basicos una miraJava introduccion conceptos basicos una mira
Java introduccion conceptos basicos una miraArisbethBernalSalina
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Eudris Cabrera
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Eudris Cabrera
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyJose Juan R. Zuñiga
 
Información básica Java
Información básica JavaInformación básica Java
Información básica JavaFordBull2er
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosJosé Antonio Sandoval Acosta
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009Pepe
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C SharpEdgardo Martinez
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - SerializaciónCarlos Hernando
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 

Ähnlich wie Curso de programación iPhone: Cocoa-Touch (20)

Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Java1-Intro.pptbbjjjfdzvñutfdnmj habitación
Java1-Intro.pptbbjjjfdzvñutfdnmj habitaciónJava1-Intro.pptbbjjjfdzvñutfdnmj habitación
Java1-Intro.pptbbjjjfdzvñutfdnmj habitación
 
Java introduccion conceptos basicos una mira
Java introduccion conceptos basicos una miraJava introduccion conceptos basicos una mira
Java introduccion conceptos basicos una mira
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Información básica Java
Información básica JavaInformación básica Java
Información básica Java
 
02 tda1 t2018
02 tda1 t201802 tda1 t2018
02 tda1 t2018
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
 
Java
JavaJava
Java
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
Persistencia en Java - Serialización
Persistencia en Java - SerializaciónPersistencia en Java - Serialización
Persistencia en Java - Serialización
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 

Kürzlich hochgeladen (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

Curso de programación iPhone: Cocoa-Touch

  • 2. Fernando Rodríguez Romero www.cocoaosx.com frr@agbo.biz @frr149
  • 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 estar compiladas y no tener acceso al código fuente, no serían modificables de otra forma. •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. Ejemplo de Categoría La clase NSArray dispone de métodos para acceder a elementos específicos del mismo, 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 que hiciese falta. Una solución más elegante y orientada a objeto es añadirle a NSArray (y por lo tanto a NSMutableArray que desciende de él) el método objectAtRandom.
  • 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
  • 8. NSArray+Random.h #import <Foundation/Foundation.h> Clase pre-existente que vamos a modificar @interface NSArrayNSArray (Random) - (id) objectAtRandom; @end
  • 9. NSArray+Random.h #import <Foundation/Foundation.h> @interface NSArray (Random) Random Nombre de nuestros añadidos - (id) objectAtRandom; @end
  • 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. 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. Protocolos Los protocolos son listas de métodos que son compartidos por distintas clases. 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 que comprobar con respondsToSelector:. Los protocolos se definen en unfichero de cabecera. La implementación va a cargo de cada una de las clases que cumplen con el protocolo.
  • 13. Implementar un Protocolo Es muy común implementar un protocolo. La comunicación delegate funciona implementando un protocolo. Por ejemplo, la vista UIWebView exige que su delegado (un controlador normalmente) 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. Implementar un Protocolo Para indicar que nuestra clase implementa un protocolo, colocamos su nombre 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. Definir un Protocolo Es 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. Bloques En Objective C son “trozos” de código que se pueden guardar en variables, pasar como argumentos, devolver como resultado de un mensaje y ejecutar posteriormente. Además capturan de forma automática el entorno léxico en el que han sido creados.
  • 17. Uso de los bloques 1.Enumeración de colecciones 2.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 este bloque) 5.Gestores de finalización (cuando termines de hacer esto, ejecuta este bloque) 6.Animación de vistas 7.Por último, tal vez la aplicación más importante en Cocoa: multitarea mediante “Grand Dispatch Central” (GCD).
  • 18. Sintaxis de los bloques 1.Enumeración de colecciones 2.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 este bloque) 5.Gestores de finalización (cuando termines de hacer esto, ejecuta este bloque) 6.Animación de vistas 7.Por último, tal vez la aplicación más importante en Cocoa: multitarea mediante “Grand Dispatch Central” (GCD).

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n