台风通过协议自动注入装配

时间:2016-09-07 12:50:01

标签: ios objective-c dependency-injection typhoon

我在使用自动注入宏正确获取程序集时遇到问题。例如:

@protocol IFormatterProvider <NSObject>

- (id)statusTextFormatter;

@end

@interface MyAssembly : TyphoonAssembly <IFormatterProvider>
@end

@implementation MyAssembly

- (id <IFormatterProvider>)formatterProvider
{
    return [TyphoonDefinition with:self]; // First guess
}

- (id)statusTextFormatter
{
    // impl
}

@end

然后尝试在业务逻辑文件中使用它:

@interface MyStuff ()

@property (nonatomic, strong) InjectedProtocol(IFormatterProvider)formatterProvider;

@end

但是得到“没有定义哪个组件满足类型”错误(顺便说一下有错误),因为程序集TyphoonInjectionDefinition已注册为NSObject

甚至可以做我正在做的事情吗?

1 个答案:

答案 0 :(得分:1)

您可以使用this approach注入程序集本身,以充当工厂或提供程序。这是一个明确的布线。

我不相信自动布线适用于装配协议,但如果感兴趣,您可以提出功能请求。