كتلة الهدف-C التي تقبل كائنًا وتُرجع منطقية
-
01-10-2019 - |
سؤال
هل يمكنك أن تكتب لي كتلة تتوافق مع هذا التعريف: (BOOL(^)(id))block
.
الأقرب الذي حصلت عليه هو:
typedef BOOL (^birds)(MyObject*);
birds c = ^(MyObject* p){ return (BOOL)[p.something boolValue]; };
ولكن يبدو أنه تمرير هذا c
في رسالة تريد (BOOL(^)(id))block
لا يذهب.
المحلول
إذا كتلة BOOL (^block)(id)
من المتوقع أن تحتاج إلى تمرير مثل هذه الكتلة وليس أ BOOL (^block)(MyObject *)
.
لذا جرب هذا:
typedef BOOL (^birds)(id);
birds c = ^(id pp) { MyObject *p = (MyObject *) pp; return [p.something boolValue]; };
لا تنتمي إلى StackOverflow