Тайфун вводит ссылку и инициализирует ее

Есть ли в Typhoon возможность вернуть экземпляр в файл сборки?

Я хотел бы добавить ссылку на 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){}];
    }];

}

Нет ли простой возможности вернуть экземпляр, подобный этому:

- (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?

}

Это неправильный подход?

1 ответ

Решение

В настоящее время можно встроить простой объект в инициализатор, свойство или метод.

В настоящее время невозможно объявить метод, который возвращает простой объект, и который участвует в сборке. Причины:

  • Typhoon обрабатывает сборку при запуске, и все методы должны возвращать TyphoonDefinition. Тайфун выделяет ключ на основе имени метода и регистрирует определение на заводе.
  • После активации TyphoonComponentFactory возвращает построенные экземпляры на основе определений. Ваши интерфейсы сборки могут находиться перед фабрикой TyphoonComponent. Обратите внимание, что фактическая реализация сборки (содержимое файла.m) к этому времени была отброшена, и мы просто повторно используем интерфейсы как прокси для TyphoonComponentFactory
  • Мы хотели поощрять простоту сборок, возвращая только определения.

Было бы просто ослабить правило, требующее, чтобы все методы сборки возвращали TyphoonDefinition. Это позволило бы внедрить объект, возвращаемый таким методом, в качестве зависимости в других определениях, учитывая, что он не будет участвовать в пуле области действия Typhoon.

Автоматическая регистрация такого экземпляра в контейнере также возможна, хотя и более сложна. Было бы необходимо договориться о том, какой неявный объем имеет такой объект.

Другие вопросы по тегам