Можно ли повторно использовать определения в 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 ответ
Это на самом деле ранее было запрошено как улучшение в системе отслеживания проблем Тайфуна. Если хотите, можете прокомментировать и проголосовать по этому вопросу.