Un protocolo informal era, como dijo Jonnathan, típicamente una categoría declarada en NSObject sin aplicación correspondiente (lo más a menudo - no era el que raro que no proporcionan implementaciones ficticias en NSObject).
A partir de 10.6 (y en el SDK de iPhone), este patrón ya no se utiliza. En concreto, lo que fue declarado como sigue en 10.5 (y anteriores):
@interface NSObject(NSApplicationNotifications)
- (void)applicationWillFinishLaunching:(NSNotification *)notification;
...
@interface NSObject(NSApplicationDelegate)
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
...
ahora se declara como:
@protocol NSApplicationDelegate <NSObject>
@optional
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
...
- (void)applicationWillFinishLaunching:(NSNotification *)notification;
...
Es decir, protocolos informales están declarados como @protocol
s con un montón de @optional
métodos .
En cualquier caso, un protocolo informal es un conjunto de declaraciones de métodos mediante el cual puede implementar opcionalmente los métodos para cambiar el comportamiento. Normalmente, pero no siempre, las implementaciones del método se proporcionan en el contexto de la delegación (una fuente de datos de la vista de tabla debe implementar un puñado de métodos requeridos y, opcionalmente, puede implementar algunos métodos adicionales, por ejemplo).
Así que es sobre lo "subclases" y luego ponerlas en práctica? Estaba intentando la sintaxis de. –
itsaboutcode