¿Cuál es la diferencia entre los protocolos formales e informales en Objective-C?¿Cuál es la diferencia entre los protocolos formales e informales en Objective-C?
Respuesta
protocolos formales e informales
Existen dos variedades de protocolo, formal e informal:
Un informal protocolo es una categoría en NSObject, que implícitamente hace que casi todos los objetos adoptadores de el protocolo. (Una categoría es una característica de lenguaje que le permite agregar métodos a una clase sin subclases). La implementación de los métodos en un protocolo informal es opcional. Antes de invocar un método, el objeto llamante comprueba para ver si el objeto de destino implementa . Hasta que se introdujeran los métodos de protocolo opcionales en Objective-C 2.0, , los protocolos informales fueron esenciales para la forma en que se implementaron las clases Foundation y AppKit .
Un formales protocolo declara una lista de métodos que se espera que las clases cliente de implementar. Los protocolos formales tienen su propia declaración, adopción y sintaxis de comprobación de tipos. Puede designar métodos cuya implementación sea o sea opcional con las palabras clave @required y @optional . Las subclases heredan los protocolos formales adoptados por sus antepasados. Un protocolo formal también puede adoptar otros protocolos .
protocolos formales son una extensión de el lenguaje Objective-C.
por lo que "protocolo informal" es solo otro nombre para la categoría? – Stas
documentaciones de Apple son terribles en comparación con google. –
@JohnDoe vey muy de acuerdo, los documentos de apple son asesinos. –
El lenguaje Objective-C proporciona una forma de declarar formalmente una lista de métodos (incluidas las propiedades declaradas) como protocolo. Los protocolos formales son compatibles con el idioma y el sistema de tiempo de ejecución. Por ejemplo, el compilador puede verificar los tipos basados en protocolos, y los objetos pueden introspectivamente en el tiempo de ejecución para informar si o no se ajustan a un protocolo.
Protocolo informal: Category
(implementaciones son opcionales)
protocolo formal: Extension
(implementaciones son opcionales y requeridos)
¿Las implementaciones de métodos de categoría son opcionales? No lo creo, porque comenté una implementación de método e inmediatamente puedo ver el error "Falta la definición del método para 'xxxmethod'". El xxxmethod se declara en el archivo .h. – selva
La forma más simple de describir la diferencia. – Warewolf
- 1. en Java ¿cuál es la diferencia entre, E, T
- 2. ¿Cuál es la diferencia entre IDelegateEvent e IEvent en F #?
- 3. ¿Cuál es la diferencia entre IDREF e IDREFS en XSD?
- 4. ¿Cuál es la diferencia entre identidad e igualdad en OOP?
- 5. ¿Cuál es la diferencia entre size_t e int en C++?
- 6. Diferencia entre los protocolos FIX y FAST?
- 7. ¿cuál es la diferencia entre invalidateList e invalidateDisplayList?
- 8. Cuál es la diferencia entre Add-PsSnapIn e Import-Module
- 9. Cuál es la diferencia entre 'índice' e 'índice de lista'
- 10. ¿Cuál es la diferencia entre NHibernate e iBATIS.NET?
- 11. ¿Cuál es la diferencia entre compilar e implementar?
- 12. ¿Cuál es la diferencia entre "privado" e "interno protegido"?
- 13. Localización e internacionalización, ¿cuál es la diferencia?
- 14. Cuál es la diferencia entre __construct() e init()
- 15. ¿Cuál es la diferencia entre "indefinido" e indefinido?
- 16. ¿Cuál es la diferencia entre PHP require e include?
- 17. ¿cuál es la diferencia entre IVT e IDT?
- 18. ¿Cuál es la diferencia entre "protegido" e "interno protegido"?
- 19. ¿Cuál es la diferencia entre AxInterop e Interop?
- 20. ¿Cuál es la diferencia entre una clave principal e identidad?
- 21. Cuál es la diferencia entre IQueryable e IEnumerable
- 22. ¿Cuál es la diferencia entre int [] [] e int [,]?
- 23. ¿Cuál es la diferencia entre import java.util. *; e importar java.util.Date; ?
- 24. ¿Cuál es la diferencia entre Scope_Identity(), Identity(), @@ Identity e Ident_Current()?
- 25. ¿Cuál es la diferencia entre WAS e IIS?
- 26. ¿Cuál es la diferencia entre las interfaces IComparable e IEquatable?
- 27. ¿Cuál es la diferencia entre IEnumerator e IEnumerable?
- 28. Erlang: ¿cuál es la diferencia entre "include_lib" e "include"?
- 29. ¿Cuál es la diferencia entre objeto e instancia?
- 30. ¿Cuál es la diferencia entre Tarea e hilo?
Sobre protocolo informal se describe en [este mensaje] (http: // stackoverflow .com/questions/2010058/informal-protocol-in-objective-c) – byJeevan