He leído la documentación pero todavía estoy confundido. ¿Alguien puede explicar qué es un protocolo? (Podría dar ejemplos de código, pero realmente estoy buscando una explicación)¿Qué es un protocolo?
Respuesta
Here's a great article on it. Efectivamente, un protocolo en Objective-C es muy similar a una interfaz en Java o una clase virtual pura en C++ (aunque no exactamente como clases virtuales puras pueden tener miembros de datos ...). Básicamente es una garantía de que una clase específica sabe cómo responder a un determinado conjunto de métodos (mensajes).
Editar El artículo original desapareció, así que lo he reemplazado con un tutorial diferente.
Un protocolo es un medio para definir una lista de métodos obligatorios y/o opcionales que implementa una clase. Si una clase adopta un protocolo, debe implementar todos los métodos requeridos en los protocolos que adopta. Cocoa utiliza protocolos para admitir la comunicación entre procesos a través de mensajes de Objective-C. Además, dado que Objective-C no es compatible con la herencia múltiple, puede lograr una funcionalidad similar con los protocolos, ya que una clase puede adoptar más de un protocolo.
Un buen ejemplo de protocolo es NSCoding, que tiene dos métodos requeridos que una clase debe implementar. Este protocolo se utiliza para permitir que las clases se codifiquen y decodifiquen, es decir, que se archiven los objetos escribiendo en el almacenamiento permanente.
@protocol NSCoding
-(void)encodeWithCoder:(NSCoder *)aCoder;
-(id)initWithCoder:(NSCoder *)aDecoder;
@end
adoptar un protocolo, escriba el nombre del protocolo en <> como a continuación
@interface SomeClass : NSObject <NSCoding>
{
some variables
}
Cómo definir un protocolo?
Podemos crear ambos métodos obligatorios y opcionales dentro de un protocolo. Lo que sigue es un definion de un protocolo llamado 'Hola':
@protocol Hello
- (BOOL)send:(id)data;
- (id)received;
@optional
- (int)progress;
@end
para utilizar el protocolo, al igual que con el ejemplo anterior, se declaran el protocolo en la interfaz y escribir los métodos requeridos en la implementación de la clase:
// Interfaz @interface AnotherClass: NSObject
{
some declaration
}
// Implementación @implementation AnotherClass
- (BOOL)send:(id)data
{
some declaration
}
- (id)received
{
some code
}
// Método opcional
- (int)progress
{
some code
}
@end
espero que le ayuda a aprender Protocolo.
- 1. ¿Qué es un protocolo webcal?
- 2. ¿Qué es el protocolo SMPP?
- 3. ¿LDAP es un protocolo TCP o UDP?
- 4. ¿Qué protocolo es mejor para la transferencia de archivos?
- 5. ¿El protocolo uwsgi es más rápido que el protocolo http?
- 6. ¿Qué tan segura es la autenticación en el protocolo mysql?
- 7. ¿Qué es el protocolo FIX para instituciones financieras?
- 8. Qué protocolo elegir para un servidor de juegos por turnos
- 9. ¿Qué codificación utiliza el protocolo HTTP?
- 10. virar un protocolo de NSObject a una implementación del protocolo
- 11. ¿Por qué el protocolo POP3 sobrevive?
- 12. ¿Cómo se puede extender un protocolo Clojure a otro protocolo?
- 13. ¿Qué pasa con el siguiente protocolo Clojure?
- 14. ¿Puede alguien explicar qué es un protocolo de nivel de cable?
- 15. ¿Qué protocolo? svn: // o http (s): //?
- 16. ¿Es posible simular un mensaje de buffer de protocolo Java?
- 17. ¿Qué es la versión 8.0 del protocolo TDS y por qué debería usarlo?
- 18. ¿Incluye un URI el protocolo?
- 19. ¿Cuál es la diferencia entre el protocolo uwsgi y el protocolo wsgi?
- 20. ¿Cuál es la diferencia entre usar un protocolo informal en NSObject o un protocolo con métodos opcionales?
- 21. El protocolo 'net.tcp' no es compatible
- 22. ¿Tiene Ruby un protocolo Metaobject y si no es así, ¿es posible implementar uno?
- 23. protocolo sin estado y protocolo con estado
- 24. ¿Cómo probar un protocolo para un método?
- 25. Protocolo Bluetooth?
- 26. Cómo crear un protocolo proxy como UIAppearance
- 27. Protocolo Android Beam LLCP
- 28. Comprensión del protocolo ZMODEM
- 29. ¿Cómo implementar un protocolo de red?
- 30. ¿Es un enlace sin el protocolo XHTML válido? es decir <a href="//www.example.com/">
Es una garantía a menos que el protocolo defina métodos opcionales. En ese caso, aún debe verificar si el método se implementó o no. El protocolo –
también puede tener propiedades. –
Solo quiero señalar a los moderadores que el enlace está muerto. – Alix