¿Es posible especificar un parámetro de bloque de método en Objective-C sin usar un typedef? Debe ser, como punteros de función, pero no puedo acertar en la sintaxis ganadora sin usar un typedef intermedio:
typedef BOOL (^PredicateBlock_t)(int);
- (void) myMethodTakingPredicate:(PredicateBlock_t)predicate
solo las compilaciones anteriores, todas estas fallan:
- (void) myMethodTakingPredicate:( BOOL(^block)(int) ) predicate
- (void) myMethodTakingPredicate:BOOL (^predicate)(int)
y no recuerdo qué otras combinaciones he probado.
Respuestas:
fuente
typedef
realmente debería preferirse a para casos más complicados.- ( void )myMethodTakingPredicate: ( BOOL ( ^ )( NSString *name, NSString *age ) )predicate { //How Should I Access name & age here...? }
BOOL ( ^ )( int )
conBOOL ( ^ )( int count )
.Así es como va, por ejemplo ...
fuente
response
en lasmartBlocks
definición del método? ¿No podrías simplemente decir(NSString*))handler {
?(NSString *)) handler
. Eso también es válido.http://fuckingblocksyntax.com
Como parámetro de método:
fuente
Otro ejemplo (este problema se beneficia de múltiples):
fuente
¡Aún más claro!
fuente