Ceci est une extension de ce queston: Is it possible to create a category of the "Block" object in Objective-C.Un bloc Obj-C peut-il s'exécuter?
Fondamentalement, alors qu'il semble possible de créer une catégorie sur des blocs, soit par NSObject ou NSBlock, je vais avoir du mal à comprendre comment le bloc serait en mesure de s'évaluer. L'exemple donné dans la réponse à la dernière question:
- (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
}
Implique qu'il est possible de jeter en quelque sorte auto à une variable de bloc, mais comment peut-on exécuter le bloc lui-même? Par exemple, dire que je l'ai fait une catégorie sur NSBlock et une méthode ne:
NSBlock* selfAsBlock = (NSBlock*)self;
Est-il un message que je peux envoyer à selfAsBlock avoir le bloc d'évaluer?
Oui, vous pouvez. Vous pouvez trouver plus dans ce (déjà sur SO) http://stackoverflow.com/questions/4824613/is-there-a-self-pointer-for-blocks –
Je ne vois pas comment cela résout ce problème. Cette réponse semble se concentrer sur la façon d'appeler un bloc à l'intérieur de sa propre définition de bloc. Je parle d'évaluer un bloc de l'objet bloc lui-même. Juste pour être un peu plus précis, ce que j'espère accomplir avec ceci est d'être capable d'ajouter des méthodes aux blocs (soit sur NSObject ou NSBlock) pour faire un flux de contrôle basé sur un bloc (ie block [block whileTrueDo: block]). Pour ce faire, j'ai besoin du bloc pour se réévaluer dans la méthode. – donalbain