ios - TyphoonOptionMatcher 与 conformsToProtocol

标签 ios objective-c dependency-injection typhoon

如果我可以使用 matcher 根据协议(protocol)选择定义,那就太好了,例如:

- (UIViewController *)viewControllerForViewModel:(id <IViewModel>)viewModel
{
    return [TyphoonDefinition withOption:viewModel matcher:^(TyphoonOptionMatcher *matcher)
    {
        [matcher conformsToProtocol:@protocol(ILoginViewModel) use:[self loginViewController]];
        [matcher conformsToProtocol:@protocol(IMainViewModel) use:[self mainScreenViewController]];
        [matcher defaultUse:[self emptyScreen]];
    }];
}

是否有可能与 Typhoon 现在拥有的东西有关,或者可能有一些解决方法?

谢谢你。

编辑:
我在 TyphoonOptionMatch 和 TyphoonOptionMatcher 中添加了一些符合条件的选项,创建 PR 是否值得?

台风选项匹配
@property (nonatomic) Protocol *proto;
....
+ (id)matchWithConformsToProto:(Protocol *)proto injection:(id)injection;

台风选项匹配器
- (void)conformsToProto:(Protocol *)aProtocol use:(id)injection
...
- (TyphoonOptionMatch *)matchForValue:(id)value {
...
    BOOL isConformProto = (match.proto && [value conformsToProtocol:match.proto]);

最佳答案

此功能已在 3.4.5 release 中推出

[matcher caseConformsToProtocol:@protocol(IMainViewModel) 
                            use:[self mainScreenViewController]];

关于ios - TyphoonOptionMatcher 与 conformsToProtocol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33939136/

相关文章:

ios - MPRemoteCommandCenter 的问题

ios - NSFetchedResultsController 时间过滤谓词建议

ios - 将类别类设置为父类中的委托(delegate)

iphone - startDownloadingUbiquitousItemAtURL 本地文件路径?

c# - 如何使用 Ninject Conventions Extension 进行绑定(bind)?

unit-testing - NerdDinner 中的依赖注入(inject) - 实际测试您的存储库或模型

android - 如何将 Android xml 布局转换为 png/svg 以在 iOS 版本中使用

ios - 如何克服#import 循环?

iphone - 如何更改标签栏项目文本颜色

node.js - 让用户将记录器注入(inject) nodejs 模块的最佳实践