Esta es una extensión de este queston: Is it possible to create a category of the "Block" object in Objective-C.¿Puede ejecutarse un bloque Obj-C?
Básicamente, si bien parece posible crear una categoría en bloques, ya sea a través de NSObject o NSBlock, tengo problemas para entender cómo el bloque podría evaluarse a sí mismo. El ejemplo dado en la respuesta a la última pregunta:
- (void) doFoo {
//do something awesome with self, a block
//however, you can't do "self()".
//You'll have to cast it to a block-type variable and use that
}
implica que es posible colar algún modo auto a una variable de bloque, pero ¿cómo se ejecutará el bloque en sí? Por ejemplo, decir que hice una categoría en NSBlock y en un método hice:
NSBlock* selfAsBlock = (NSBlock*)self;
¿Hay algún mensaje que puedo enviar a selfAsBlock tener el bloque de evaluar?
Sí se puede. Puedes encontrar más en esto (ya en SO) http://stackoverflow.com/questions/4824613/is-there-a-self-pointer-for-blocks –
No veo cómo eso resuelve este problema. Esa respuesta parece enfocarse en cómo llamar a un bloque desde su propia definición de bloque. Estoy hablando de evaluar un bloque desde el objeto de bloque en sí. Para ser un poco más específico, lo que espero lograr con esto es poder agregar métodos a los bloques (ya sea en NSObject o NSBlock) para hacer un flujo de control basado en bloques (es decir, [bloquear al mismo tiempo: Ejecutar bloque]). Para hacer esto, necesito que el bloque reevalúe en el método. – donalbain