iOS 5 Blocks ARC b ребристое приведение

Этот вопрос ссылается на этот вопрос: Как упростить обратный вызов логика с блоком?

В моем заголовке есть эти typedef

typedef void (^StuffDoneBlock)(NSDictionary * parsedData);
typedef void (^StuffFailedBlock)(NSError * error);

И в init

stuffDoneCallback = Block_copy(done);
StuffFailedCallback = Block_copy(error);

В этом документе говорится, что Block_copy не требуется. Но тогда ему требуется мостовое приведение. Сообщение компилятора находится по адресу следует:

error: cast of block pointer type 'StuffDoneBlock' (aka 'void (^)(NSDictionary *__strong)') to C pointer type 'const void *' requires a bridged cast [4]
         stuffDoneCallback = _bridge(Block_copy(done));
                                     ^~~~~~~~~~~~~~~~
/Developer-4.2/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/usr/include/Block.h:60:61: note: instantiated from:
 #define Block_copy(...) ((__typeof(__VA_ARGS__))_Block_copy((const void *)(__VA_ARGS__)))
                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~

9
задан Community 23 May 2017 в 11:51
поделиться