Protocolos en Objective-C
Un contrato que las clases adoptan entre paréntesis angulares.
#import <Foundation/Foundation.h>
// A protocol is a contract; classes adopt it in angle brackets.
@protocol Playable
- (NSString *)play;
@end
@interface Single : NSObject <Playable>
@end
@implementation Single
- (NSString *)play {
return @"45 rpm, three minutes of joy";
}
@end
int main(void) {
@autoreleasepool {
id<Playable> disc = [[Single alloc] init];
NSLog(@"%@", [disc play]);
}
return 0;
}
Cómo funciona
@protocol Playabledeclara los métodos requeridos.NSObject <Playable>lo adopta en la línea de interfaz.id<Playable>tipa por capacidad en vez de por clase.
Palabras clave y builtins usados aquí
NSObjectNSStringidintreturnvoid
El intento, en números
- Líneas
- 23
- Caracteres a escribir
- 402
- Tokens
- 78
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 72 segundos.
Paso 1 de 3 en Protocolos y dinamismo; paso 19 de 27 en Fundamentos del lenguaje.