Soy algo nuevo en los bloques y necesito ayuda. Quiero almacenar un bloque en un NSDictionary
y ejecutar dicho bloque cuando se acceda a partir de su key
. Esto es lo que tengo hasta ahora como un ejemplo.¿Cómo puedo ejecutar bloques almacenados en un NSDictionary?
NSDictionary *blocks = [NSDictionary dictionaryWithObjectsAndKeys:
^{NSLog(@"Log Block 1");}, @"Block1",
^{NSLog(@"Log Block 2");}, @"Block2",
nil];
entonces enumerar a través de diccionario mediante keyEnumerator
. Sé que el bloque se está almacenando correctamente porque llamo al NSLog(@"%@", [blocks objectForKey:key]);
durante la enumeración y obtengo el <__NSGlobalBlock__: 0x100003750>
. Entonces sé que puedo acceder a él, pero ¿cómo puedo ejecutarlo en este momento?
Gracias, esto funcionó para mí. Sin embargo, noté que cuando se hacen llamadas subsecuentes a cada bloque, se devuelve la misma información que cuando se ejecutó por primera vez, en lugar de incluir cualquier cosa que pueda haber cambiado desde entonces. ¿Hay alguna manera de hacer que se ejecute cada vez que se llama en lugar de devolver la información original? – sud0
Se ejecuta cada vez, pero captura variables externas cuando se copia, en lugar de cuando se ejecuta. –