Можно ли повторно использовать определения в Typhoon, которые имеют аргументы времени выполнения?

В нашем приложении мы повторно используем контроллер базовых представлений, который обеспечивает общие функциональные возможности представлений в нашем приложении. Это должно быть введено с представлением и моделью представления. Я создал определение в нашей сборке, подобное следующему:

- (BaseViewController *)baseViewControllerWith:(UIView *)view andViewModel:(ViewModel *)viewModel {
    return [TyphoonDefinition withClass:[MLBaseViewController class] configuration:^(TyphoonDefinition *definition) {
    [definition useInitializer:@selector(initWithView:viewModel:) parameters:^(TyphoonMethod *initializer) {
        [initializer injectParameterWith:view];
        [initializer injectParameterWith:viewModel];
    }];
}];

Идея здесь состоит в том, чтобы повторно использовать это определение для всех различных целей. Мы могли бы добавить SignUpView и SignUpViewModel:

- (SignUpViewController *)signUpViewControllerWithViewModel:(ViewModel *)viewModel {
  [self baseViewControllerWith:[self signUpView:viewModel] andViewModel:viewModel]
}

Я получил довольно веселое исключение во время выполнения:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Congratulations you've tried to do something über-funky with Typhoon %). You are the 3rd person EVER to receive this error message. Returning a definition that is the result of a nested runtime argument is not supported. Instead unroll the definition.' *

Причина, по которой я делаю это таким образом, заключается в том, что у меня так много определений, которые используют это определение baseViewController, и я хотел бы иметь возможность использовать его повторно и просто вводить различные представления / модели представления вместо необходимости переписывать это определение везде. Разве это не поддерживается в Тайфуне?

1 ответ

Это на самом деле ранее было запрошено как улучшение в системе отслеживания проблем Тайфуна. Если хотите, можете прокомментировать и проголосовать по этому вопросу.

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