Несовместимые типы указателей блоков, отправляющие проблему с идентификатором с ViperMcFlurry

Я без проблем использовал ViperMcFlurry в своем проекте в течение многих лет, и с XCode 12 beta 6 он возвращает мне ошибку Incompatible block pointer types sending. Я пробовал разные способы исправить это, но без шансов. Он возвращается

Incompatible block pointer types sending 'id<RamblerViperModuleOutput> (^)(__strong id<RamblerModuleBetaInput>)' to parameter of type 'RamblerViperModuleLinkBlock' (aka 'id<RamblerViperModuleOutput> (^)(__strong id<RamblerViperModuleInput>)')

Что я пытаюсь сделать, это

[[self.transitionHandler openModuleUsingSegue:RamblerAlphaToBetaSegue]
 thenChainUsingBlock:^id<RamblerViperModuleOutput>(id<RamblerModuleBetaInput> moduleInput) {
     [moduleInput configureWithExampleString:exampleString];
     return nil;
 }];

и я имею

@protocol RamblerModuleBetaInput <RamblerViperModuleInput>

в RamblerModuleBetaInput.h. Также у меня есть

@protocol RamblerViperModuleInput <NSObject>

in RamblerViperModuleInput.h


person birdcage    schedule 27.08.2020    source источник
comment
Из-за ошибки - он хочет RamblerViperModuleInput, а вы проходите RamblerViperModuleBetaInput ... заметьте разницу - подсказка бета ...   -  person skaak    schedule 27.08.2020
comment
Да, но тогда я не могу вызвать moduleInput configureWithExampleString: exampleString.   -  person birdcage    schedule 27.08.2020


Ответы (1)


См. https://github.com/rambler-digital-solutions/ViperMcFlurry/pull/37 или временно можно обойти это, добавив флаги в настройки сборки CFLAGS, чтобы отключить проверку -Xclang -fcompatibility-qualified-id-block-type-checking.

person winnie-ru    schedule 16.09.2020