diff --git a/Source/JSObjectionInjector.h b/Source/JSObjectionInjector.h index c96f471..5569e1f 100644 --- a/Source/JSObjectionInjector.h +++ b/Source/JSObjectionInjector.h @@ -11,9 +11,9 @@ @interface JSObjectionInjector : NSObject -- (instancetype)initWithContext:(NSDictionary *)theGlobalContext; -- (instancetype)initWithContext:(NSDictionary *)theGlobalContext andModule:(JSObjectionModule *)theModule; -- (instancetype)initWithContext:(NSDictionary *)theGlobalContext andModules:(NSArray *)theModules; +- (instancetype)initWithContext:(NSMutableDictionary *)theGlobalContext; +- (instancetype)initWithContext:(NSMutableDictionary *)theGlobalContext andModule:(JSObjectionModule *)theModule; +- (instancetype)initWithContext:(NSMutableDictionary *)theGlobalContext andModules:(NSArray *)theModules; - (id)getObject:(id)classOrProtocol; - (id)getObject:(id)classOrProtocol named:(NSString*)name; - (id)getObjectWithArgs:(id)classOrProtocol, ... NS_REQUIRES_NIL_TERMINATION; diff --git a/Source/JSObjectionInjector.m b/Source/JSObjectionInjector.m index 97d39b5..f387fc1 100644 --- a/Source/JSObjectionInjector.m +++ b/Source/JSObjectionInjector.m @@ -29,7 +29,7 @@ - (void)configure { @end @interface JSObjectionInjector() { - NSDictionary *_globalContext; + NSMutableDictionary *_globalContext; NSMutableDictionary *_context; NSSet *_eagerSingletons; NSMutableArray *_modules; @@ -43,7 +43,7 @@ - (void)configureModule:(JSObjectionModule *)module; @implementation JSObjectionInjector -- (instancetype)initWithContext:(NSDictionary *)theGlobalContext { +- (instancetype)initWithContext:(NSMutableDictionary *)theGlobalContext { if ((self = [super init])) { _globalContext = theGlobalContext; _context = [[NSMutableDictionary alloc] init]; @@ -55,7 +55,7 @@ - (instancetype)initWithContext:(NSDictionary *)theGlobalContext { return self; } -- (instancetype)initWithContext:(NSDictionary *)theGlobalContext andModule:(JSObjectionModule *)theModule { +- (instancetype)initWithContext:(NSMutableDictionary *)theGlobalContext andModule:(JSObjectionModule *)theModule { if ((self = [self initWithContext:theGlobalContext])) { [self configureModule:theModule]; [self initializeEagerSingletons]; @@ -63,7 +63,7 @@ - (instancetype)initWithContext:(NSDictionary *)theGlobalContext andModule:(JSOb return self; } -- (instancetype)initWithContext:(NSDictionary *)theGlobalContext andModules:(NSArray *)theModules { +- (instancetype)initWithContext:(NSMutableDictionary *)theGlobalContext andModules:(NSArray *)theModules { if ((self = [self initWithContext:theGlobalContext])) { for (JSObjectionModule *module in theModules) { [self configureModule:module]; @@ -261,6 +261,7 @@ - (void)configureModule:(JSObjectionModule *)module { NSSet *mergedSet = [module.eagerSingletons setByAddingObjectsFromSet:_eagerSingletons]; _eagerSingletons = mergedSet; [_context addEntriesFromDictionary:module.bindings]; + [_globalContext addEntriesFromDictionary:_context]; } - (void)configureDefaultModule {