É possível especificar um parâmetro de bloco de método no Objective-C sem usar um typedef? Deve ser, como ponteiros de função, mas não consigo acessar a sintaxe vencedora sem usar um typedef intermediário:
typedef BOOL (^PredicateBlock_t)(int);
- (void) myMethodTakingPredicate:(PredicateBlock_t)predicate
somente as compilações acima, todas estas falham:
- (void) myMethodTakingPredicate:( BOOL(^block)(int) ) predicate
- (void) myMethodTakingPredicate:BOOL (^predicate)(int)
e não me lembro de outras combinações que tentei.
objective-c
parameters
objective-c-blocks
Bogatyr
fonte
fonte
Respostas:
fonte
typedef
deva realmente ser preferida para casos mais complicados.- ( void )myMethodTakingPredicate: ( BOOL ( ^ )( NSString *name, NSString *age ) )predicate { //How Should I Access name & age here...? }
BOOL ( ^ )( int )
porBOOL ( ^ )( int count )
.É assim que acontece, por exemplo ...
fonte
response
nasmartBlocks
definição do método? Você não poderia apenas dizer(NSString*))handler {
?(NSString *)) handler
. Isso também é válido.http://fuckingblocksyntax.com
Como parâmetro do método:
fonte
Outro exemplo (esse problema se beneficia de vários):
fonte
Ainda mais claro!
fonte