注入器提供了用于在运行时绑定和注入服务的轻量级框架。
"服务"由一个API及其实现组成。对于给定的API可以有多个实现。
如果您有一个API
// HelloService.h
@protocol HelloService <NSObject>
- (void)sayHello;
@end
以及上述API的实现
// HelloNSLogger.h
@interface HelloNSLogger <HelloService>
@end
// HelloNSLogger.m
@implementation HelloNSLogger
- (void)sayHello {
NSLog(@"Hello");
}
@end
注入器让您将实现绑定到服务注入器。
[[NSRInjector sharedInstance] bindImplClass:[HelloNSLogger class]
toService:@protocol(HelloService)
withOptions:[NSRInjectorOptions lazySingleton]];
// Shortcut macro for the above
NSR_BIND(HelloNSLogger, HelloService, [NSRInjectorOptions lazySingleton]);
然后,HelloService
的客户端可以通过以下方式获得HelloService
的实例
id<HelloService> helloService = [[NSRInjector sharedInstance] inject:@protocol(HelloService)];
// OR
id<HelloService> helloService = NSR_INJECT(HelloService);