2010-05-16 9 views
8

Soy un desarrollador de C# y comienzo la programación de Objective-C/Cocoa Touch. Creo que podría haber equivocado algunos términos porque sigo pensando en ellos "el modo C#". Específicamente, he encontrado el término "protocolo" en diversos documentos y tutoriales.¿Qué significa exactamente "adoptar un protocolo" en la documentación de Objective-C/Cocoa?

En Objective-C, ¿qué es exactamente un protocolo? ¿Se puede comparar con una interfaz C#?

¿Es la siguiente declaración lo mismo que decir "La clase está implementando el protocolo UITextFieldDelegate"? ¿O se debe comparar UITextFieldDelegate con un parámetro de tipo genérico en C#?

@interface MyViewController : UIViewController <UITextFieldDelegate> { } 
+2

Protocolo Objective-C == Interfaz C# –

Respuesta

7

En Objective-C un protocol es el nombre de una colección de métodos y/selectores es como una declaración de interfaz en Java (probablemente también en C#).

@interface MyViewController : UIViewController <UITextFieldDelegate> { } 

significa que la clase MyViewController hereda de la clase UIViewController y adopta/implementa el protocolo UITextFieldDelegate.

Esto significa que MyViewController debe implementar todos los métodos declarados en el UITextFieldDelegate.

EDITAR: Parece que con la introducción de Objective-C 2.0 se introdujo la posibilidad de marcar los métodos de un protocolo como @optional y @required. Ver la sección Optional Protocol Methods de Apples Objective-C documentation.

Enlace útil de wikibooks sobre Objective-C Protocols.

+0

Creo que te equivocas con la última oración. No debe implementar todos los métodos, pero puede implementarlos, al menos eso es lo que dicen los documentos, y también lo que estoy haciendo actualmente en mi código. – driis

+0

Aparte de eso, gracias por su respuesta clara :-) – driis

+0

Creo que algo cambió aquí con la introducción de Objective-C 2.0. Pero al usar la semántica "antigua" Objective-C, una clase debe implementar todos los métodos de un protocolo adoptado. – MKroehnert

1

El protocolo es como una interfaz en algún aspecto. Si declara que algún método en el protocolo es opcional, la clase que lo adopte no necesita implementar esos métodos. Si no, la clase tiene que implementarlo.

Cuestiones relacionadas