接收未声明的私有选择器 属性
Receiving undeclared selector for private property
我在程序集中有这个初始化程序:
- (id<APBSearchWireframeInterface>)searchWireframe {
return [TyphoonDefinition withClass:[APBSearchWireframe class] configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(searchViewController) with:[self searchViewController]];
[definition injectProperty:@selector(mapFromSearchInput) with:[[self mapAssembly] mapWireframe]];
}];
}
最后一行,注入时mapFromSearchInput
我收到警告
undeclared selector 'mapFromSearchInput'
我在 APBSearchWireframe
的私有扩展中拥有这两个属性
@interface APBSearchWireframe()
@property (nonatomic, readwrite, strong) id<APBSearchView> searchViewController;
@property (nonatomic, readwrite, strong) id<APBMapFromSearchInput> mapFromSearchInput;
@end
并且mapWireframe
符合几个接口
- (id<APBMapWireframeInterface, APBMapFromSearchInput>)mapWireframe;
如果我将 属性 定义从私有扩展名移动到 .h 中,警告 dissappears.Why 我是否收到第二次注入的错误但第一次没有?我已正确完成所有导入,应用程序运行良好,但这个警告真的很烦人...
谢谢。
您是否确保:
- 您在 .h 文件中使用前向声明(即
@class Something
)并在 .m 中使用 #import
?
如果是这样并且错误仍然出现,那么编译器似乎变得混乱了。你可以:
- 使用sel_registerName
预先声明选择器
- 抑制此特定警告
示例:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
... your code here ...
#pragma clang diagnostic pop
我在程序集中有这个初始化程序:
- (id<APBSearchWireframeInterface>)searchWireframe {
return [TyphoonDefinition withClass:[APBSearchWireframe class] configuration:^(TyphoonDefinition *definition) {
[definition injectProperty:@selector(searchViewController) with:[self searchViewController]];
[definition injectProperty:@selector(mapFromSearchInput) with:[[self mapAssembly] mapWireframe]];
}];
}
最后一行,注入时mapFromSearchInput
我收到警告
undeclared selector 'mapFromSearchInput'
我在 APBSearchWireframe
@interface APBSearchWireframe()
@property (nonatomic, readwrite, strong) id<APBSearchView> searchViewController;
@property (nonatomic, readwrite, strong) id<APBMapFromSearchInput> mapFromSearchInput;
@end
并且mapWireframe
符合几个接口
- (id<APBMapWireframeInterface, APBMapFromSearchInput>)mapWireframe;
如果我将 属性 定义从私有扩展名移动到 .h 中,警告 dissappears.Why 我是否收到第二次注入的错误但第一次没有?我已正确完成所有导入,应用程序运行良好,但这个警告真的很烦人...
谢谢。
您是否确保:
- 您在 .h 文件中使用前向声明(即
@class Something
)并在 .m 中使用#import
?
如果是这样并且错误仍然出现,那么编译器似乎变得混乱了。你可以:
- 使用sel_registerName 预先声明选择器
- 抑制此特定警告
示例:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
... your code here ...
#pragma clang diagnostic pop