tutorial programación programacion objective lenguaje español entre diferencias iphone objective-c cocoa cocoa-touch macos

iphone - programación - ¿Cuál es la diferencia entre los protocolos formales e informales en Objective-C?



swift(lenguaje de programación) (3)

¿Cuál es la diferencia entre los protocolos formales e informales en Objective-C?


De la documentación oficial

Protocolos formales e informales

Hay dos variedades de protocolo, formal e informal:

  • Un protocolo informal es una categoría en NSObject, que implícitamente hace que casi todos los objetos adopten el protocolo. (Una categoría es una función de idioma que le permite agregar métodos a una clase sin crear subclases). La implementación de los métodos en un protocolo informal es opcional. Antes de invocar un método, el objeto llamante verifica si el objeto objetivo lo implementa. Hasta que se introdujeron métodos de protocolo opcionales en Objective-C 2.0, los protocolos informales fueron esenciales para la forma en que las clases Foundation y AppKit implementaron la delegación.

  • Un protocolo formal declara una lista de métodos que se espera que las clases de clientes implementen. Los protocolos formales tienen su propia declaración, adopción y sintaxis de verificación de tipos. Puede designar métodos cuya implementación es obligatoria u 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.

Los protocolos formales son una extensión del lenguaje Objective-C.


El lenguaje Objective-C proporciona una forma de declarar formalmente una lista de métodos (incluidas las propiedades declaradas) como un 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 se ajustan o no a un protocolo.


Protocolo informal : Category (las implementaciones son opcionales)

Protocolo formal : Extension (las implementaciones son opcionales y obligatorias)