台风注入一个引用并初始化它
Typhoon inject a reference and initialise it
Typhoon 中是否有可能 return 汇编文件中的一个实例?
我想注入 AFHTTPRequestOperationManager
的引用,然后设置响应和请求序列化程序。
我想我可以做这样的事情:
- (AFHTTPRequestOperationManager*) httpRequestManager{
return [TyphoonDefinition withClass:[AFHTTPRequestOperationManager class] configuration:^(TyphoonDefinition * definition){
[definition useInitializer:@selector(initWithBaseURL:) parameters:^(TyphoonMethod * initializer){
NSURL * baseURL = [NSURL URLWithString:kPBAuthenticatorBaseURL];
[initializer injectParameterWith:baseURL];
}];
[definition performAfterInjections:@selector(setResponseSerializer:) parameters:^(TyphoonMethod * initializer){}];
[definition performAfterInjections:@selector(setRequestSerializer:) parameters:^(TyphoonMethod * initializer){}];
}];
}
没有简单的选项可以 return 这样的实例 :
- (AFHTTPRequestOperationManager*) httpRequestManager{
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//Do some stuff to register it in the graph object --> HELP?
}
这种做法有错吗?
目前可以将一个简单的对象内联到初始化程序、属性 或方法中。
目前无法声明一个 return 是简单对象的方法,并使其参与程序集。原因是:
- Typhoon 在启动时对程序集进行检测,所有方法都应 return TyphoonDefinition。 Typhoon 根据方法名分配一个key,并在工厂中注册定义。
- 激活后,TyphoonComponentFactory returns 根据定义构建了实例。您的装配界面可以摆在 TyphoonComponent 工厂前面。请注意,此时实际的程序集实现(.m 文件的内容)已被丢弃,我们只是将接口重用为 TyphoonComponentFactory
的代理
- 我们希望通过 return 仅定义来鼓励保持程序集简单。
放宽要求所有组装方法到 return TyphoonDefinition 的规则会很简单。这将允许注入对象 return 通过这种方法作为其他定义中的依赖项,请记住它不会参与 Typhoon 的作用域池。
在容器中自动注册这样的实例也是可能的,尽管涉及更多。有必要就此类对象具有的隐式范围达成一致。
Typhoon 中是否有可能 return 汇编文件中的一个实例?
我想注入 AFHTTPRequestOperationManager
的引用,然后设置响应和请求序列化程序。
我想我可以做这样的事情:
- (AFHTTPRequestOperationManager*) httpRequestManager{
return [TyphoonDefinition withClass:[AFHTTPRequestOperationManager class] configuration:^(TyphoonDefinition * definition){
[definition useInitializer:@selector(initWithBaseURL:) parameters:^(TyphoonMethod * initializer){
NSURL * baseURL = [NSURL URLWithString:kPBAuthenticatorBaseURL];
[initializer injectParameterWith:baseURL];
}];
[definition performAfterInjections:@selector(setResponseSerializer:) parameters:^(TyphoonMethod * initializer){}];
[definition performAfterInjections:@selector(setRequestSerializer:) parameters:^(TyphoonMethod * initializer){}];
}];
}
没有简单的选项可以 return 这样的实例 :
- (AFHTTPRequestOperationManager*) httpRequestManager{
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//Do some stuff to register it in the graph object --> HELP?
}
这种做法有错吗?
目前可以将一个简单的对象内联到初始化程序、属性 或方法中。
目前无法声明一个 return 是简单对象的方法,并使其参与程序集。原因是:
- Typhoon 在启动时对程序集进行检测,所有方法都应 return TyphoonDefinition。 Typhoon 根据方法名分配一个key,并在工厂中注册定义。
- 激活后,TyphoonComponentFactory returns 根据定义构建了实例。您的装配界面可以摆在 TyphoonComponent 工厂前面。请注意,此时实际的程序集实现(.m 文件的内容)已被丢弃,我们只是将接口重用为 TyphoonComponentFactory 的代理
- 我们希望通过 return 仅定义来鼓励保持程序集简单。
放宽要求所有组装方法到 return TyphoonDefinition 的规则会很简单。这将允许注入对象 return 通过这种方法作为其他定义中的依赖项,请记住它不会参与 Typhoon 的作用域池。
在容器中自动注册这样的实例也是可能的,尽管涉及更多。有必要就此类对象具有的隐式范围达成一致。