台风注入一个引用并初始化它

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 的作用域池。

在容器中自动注册这样的实例也是可能的,尽管涉及更多。有必要就此类对象具有的隐式范围达成一致。