respuesta simple sería Protocolo.
Simple but wrong. Un protocolo es una especificación de interfaz. Es una colección de mensajes que un objeto debe (ignorando la palabra clave @optional
por el momento) responder a.
El término "función virtual" no tiene contraparte directa en Objective-C. En Objective-C no llama funciones a objetos, le envía mensajes. El objeto en sí mismo luego decide cómo responder al mensaje, generalmente al buscar el mensaje en su objeto de clase, encontrar el método asociado e invocarlo. Tenga en cuenta que todo esto sucede en tiempo de ejecución, no en tiempo de compilación.
El mapeo entre los mensajes (o "selectores" para darles su término técnico) y los métodos se basa completamente en el @implementation
. Las declaraciones de métodos en el @interface
están solo ahí para darle al compilador la información que necesita para advertirle que puede haber olvidado la implementación de un método. Y es solo una advertencia porque no se puede decir hasta el momento de la ejecución si el objeto realmente responde al mensaje o no. Por ejemplo, alguien más podría agregar una categoría a una clase existente que proporciona implementaciones para los métodos que faltan, o una clase podría anular forwardingTargetForSelector:
para reenviar mensajes a los que no responde en otro lugar.
http://stackoverflow.com/questions/5222083/implement-a-pure-virtual-method-in-objective-c –