-
Notifications
You must be signed in to change notification settings - Fork 268
Propagating runtime arguments
Jasper Blues edited this page May 1, 2014
·
13 revisions
The following example shows the following concepts:
- Propagating a runtime argument through to a dependency (setLoyaltyAccounts method)
- Using runtime arguments with ciruclar dependencies (delegate property)
- (id)loyaltyManagementControllerWithAuthorizationKey:(NSString*)authorizationKey loyaltyAccounts:(NSArray*)loyaltyAccounts;
{
return [TyphoonDefinition withClass:[LoyaltyManagementViewController class] configuration:^(TyphoonDefinition* definition)
{
[definition useInitializer:@selector(initWithAuthorizationKey:loyaltyClient:view:) parameters:^(TyphoonMethod* initializer)
{
[initializer injectParameterWith:authorizationKey];
[initializer injectParameterWith:[_networkComponents loyaltyClient]];
[initializer injectParameterWith:[self loyaltyManagementViewWithAuthorizationKey:authorizationKey
loyaltyAccounts:loyaltyAccounts]];
}];
[definition injectProperty:@selector(assembly)];
[definition injectProperty:@selector(title) with:@"Loyalty Accounts"];
}];
}
- (id)loyaltyManagementViewWithAuthorizationKey:(NSString*)authorizationKey loyaltyAccounts:(NSArray*)loyaltyAccounts
{
return [TyphoonDefinition withClass:[LoyaltyManagementView class] configuration:^(TyphoonDefinition* definition)
{
//The loyaltyAccounts parameter is propagated through the parent controller onto the view
[definition injectMethod:@selector(setLoyaltyAccounts:) parameters:^(TyphoonMethod* method)
{
[method injectParameterWith:loyaltyAccounts];
}];
//The delegate is a circular dependency, passing the two parameters back.
[definition injectProperty:@selector(delegate)
with:[self loyaltyManagementControllerWithAuthorizationKey:authorizationKey loyaltyAccounts:loyaltyAccounts]];
}];
}
Something still not clear? How about posting a question on StackOverflow.
Get started in two minutes.
Get familiar with Typhoon.
- Types of Injections
- What can be Injected
- Auto-injection (Objective-C)
- Scopes
- Storyboards
- TyphoonLoadedView
- Activating Assemblies
Become a Typhoon expert.
For contributors or curious folks.