Captura en blocks en Objective-C
Las capturas planas son fotos; __block concede escritura.
#import <Foundation/Foundation.h>
int main(void) {
@autoreleasepool {
// Blocks capture by value unless __block grants write access.
__block NSInteger rung = 0;
void (^ringUp)(NSInteger) = ^(NSInteger cents) {
rung += cents;
};
ringUp(2499); ringUp(1250);
NSLog(@"Till holds %ld cents", (long)rung);
// A plain capture is a snapshot from definition time.
NSString *clerk = @"Rae";
void (^stamp)(void) = ^{ NSLog(@"Rung up by %@", clerk); };
stamp();
}
return 0;
}
Cómo funciona
__block NSInteger rungdeja que el block mute la variable.- Cada llamada por
ringUpactualiza el almacenamiento compartido. - Una captura plana como
clerkqueda congelada al definirse.
Palabras clave y builtins usados aquí
NSString__blockintlongreturnvoid
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 465
- Tokens
- 103
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 95 segundos.
Paso 2 de 3 en Blocks; paso 17 de 27 en Fundamentos del lenguaje.