Apakah mungkin untuk menentukan parameter blok metode di Objective-C tanpa menggunakan typedef? Itu harus, seperti pointer fungsi, tapi saya tidak bisa menemukan sintaks yang menang tanpa menggunakan typedef perantara:
typedef BOOL (^PredicateBlock_t)(int);
- (void) myMethodTakingPredicate:(PredicateBlock_t)predicate
hanya kompilasi di atas, semua ini gagal:
- (void) myMethodTakingPredicate:( BOOL(^block)(int) ) predicate
- (void) myMethodTakingPredicate:BOOL (^predicate)(int)
dan saya tidak dapat mengingat kombinasi apa yang telah saya coba.
Jawaban:
sumber
typedef
harus benar-benar disukai untuk kasus yang lebih rumit.- ( void )myMethodTakingPredicate: ( BOOL ( ^ )( NSString *name, NSString *age ) )predicate { //How Should I Access name & age here...? }
BOOL ( ^ )( int )
denganBOOL ( ^ )( int count )
.Begini caranya, misalnya ...
sumber
response
dalamsmartBlocks
definisi metode? Tidak bisakah Anda mengatakannya saja(NSString*))handler {
?(NSString *)) handler
. Itu juga valid.http://fuckingblocksyntax.com
Sebagai parameter metode:
sumber
Contoh lain (masalah ini mendapat manfaat dari banyak):
sumber
Lebih jelas lagi!
sumber