Jest to rozszerzenie tego Queston: Is it possible to create a category of the "Block" object in Objective-C.Czy blok Obj-C może wykonać się sam?
Zasadniczo gdy wydaje się możliwe, aby utworzyć kategorię na blokach, albo poprzez NSObject lub NSBlock, mam problemy ze zrozumieniem jak blok będzie w stanie ocenić sam. Przykład podany w odpowiedzi na ostatnie pytanie:
- (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
}
oznacza, że możliwe jest, aby w jakiś sposób rzucić ja do zmiennej bloku, ale w jaki sposób można by wykonać samego bloku? Na przykład, powiedzmy zrobiłem kategorię na NSBlock aw metodzie udało:
NSBlock* selfAsBlock = (NSBlock*)self;
Czy istnieje mogę wysłać wiadomość do selfAsBlock mieć blok oceniać?
Tak można. Można znaleźć więcej na ten (już na SO) http://stackoverflow.com/questions/4824613/is-there-a-self-pointer-for-blocks –
nie widzę, w jaki sposób rozwiązuje ten problem. Ta odpowiedź wydaje się koncentrować na sposobie wywoływania bloku z własnej definicji bloku. Mówię o ocenie bloku z samego obiektu bloku. Wystarczy być nieco bardziej szczegółowe, co mam nadzieję osiągnąć to, aby móc dodać metody do bloków (zarówno na NSObject lub NSBlock) zrobić przepływ sterowania oparty bloku (czyli [blok whileTrueDo: blok]). Aby to zrobić, potrzebuję bloku, aby dokonać ponownej oceny w metodzie. – donalbain