2010-08-26 18 views
1

Pouvez-vous s'il vous plaît écrire pour moi un bloc qui est conforme à cette définition: (BOOL(^)(id))block.Objective-C Bloc qui accepte un objet et renvoie un booléen

Le plus proche que j'ai obtenu est:

typedef BOOL (^birds)(MyObject*); 
birds c = ^(MyObject* p){ return (BOOL)[p.something boolValue]; }; 

Mais il semble cette c dans passait un message qui veut (BOOL(^)(id))block est un pas aller.

Répondre

1

si un bloc BOOL (^block)(id) est attendu, vous devez passer un tel bloc et non un BOOL (^block)(MyObject *).

Donc, essayez ceci:

typedef BOOL (^birds)(id); 
birds c = ^(id pp) { MyObject *p = (MyObject *) pp; return [p.something boolValue]; }; 
+0

Pouvez-vous modifier pour ajouter le point-virgule à la fin de la ligne? Ça m'a fait trébucher, ça va probablement faire trébucher quelqu'un d'autre. –

+0

pourquoi ne pas typedef BOOL (^ birds) (* MyObject); ? – sleepwalkerfx