Tipado dinámico en Objective-C
id guarda lo que sea; las preguntas se hacen en ejecución.
#import <Foundation/Foundation.h>
int main(void) {
@autoreleasepool {
// id holds any object; the checks happen at run time.
NSArray *mixedBin = @[ @"Low", @1977, @"Heroes" ];
for (id item in mixedBin) {
if ([item isKindOfClass:[NSString class]]) {
NSLog(@"Title: %@", item);
} else if ([item isKindOfClass:[NSNumber class]]) {
NSLog(@"Year: %@", item);
}
}
// respondsToSelector: asks before sending.
id thing = @"quiet storm";
NSLog(@"Can shout? %d",
[thing respondsToSelector:@selector(uppercaseString)]);
}
return 0;
}
Cómo funciona
ides el tipo cualquier-objeto; las colecciones mezclan libres.isKindOfClass:clasifica una caja mixta en ejecución.respondsToSelector:pregunta antes de enviar — @selector nombra uno.
Palabras clave y builtins usados aquí
NSArrayNSNumberNSStringclasselseforidifinintreturnvoid
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 523
- Tokens
- 115
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 115 segundos.
Paso 3 de 3 en Protocolos y dinamismo; paso 21 de 27 en Fundamentos del lenguaje.