首页 > 解决方案 > 不兼容的块指针类型发送与 ViperMcFlurry 的 'id 问题

问题描述

我在我的项目中使用 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>

RamblerViperModuleInput.h

标签: swiftobjective-cios14viper-architecturexcode12beta6

解决方案


请参阅https://github.com/rambler-digital-solutions/ViperMcFlurry/pull/37或暂时您可以通过在 Build Settings 中添加标志CFLAGS来禁用 check来解决它-Xclang -fcompatibility-qualified-id-block-type-checking


推荐阅读