Skip to content

Commit

Permalink
Reverted refactoring of last two commits. WeakSingletone scope done.
Browse files Browse the repository at this point in the history
Fixed memory management bugs (arc usage) in component builder category.
Fixed alloc init bug, related to class clusters
Added exception for circular init dependency.
  • Loading branch information
alexgarbarev committed Jan 29, 2014
1 parent a56e295 commit c57d18f
Show file tree
Hide file tree
Showing 23 changed files with 234 additions and 253 deletions.
6 changes: 3 additions & 3 deletions A-Typhoon.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -758,12 +758,12 @@
BA798CB709B2750980CFFC62 /* TyphoonComponentFactory+InstanceBuilder.h */,
BA798518E11F23A1021A6528 /* TyphoonComponentFactory+InstanceBuilder.m */,
BA79899ED482BE5A9D176ED6 /* TyphoonComponentFactory+TyphoonDefinitionRegisterer.h */,
BA798FC918C219BF4F199085 /* TyphoonCallStack.h */,
BA79897F17DB88BEA7549100 /* TyphoonCallStack.m */,
BA798AA10B9FA9B3D53146C0 /* TyphoonStackElement.h */,
BA798FC918C219BF4F199085 /* TyphoonCallStack.h */,
BA7981BE9FC036F9CB30E1F9 /* TyphoonStackElement.m */,
BA7988CB0A04D544852FC120 /* TyphoonParentReferenceHydratingPostProcessor.h */,
BA798AA10B9FA9B3D53146C0 /* TyphoonStackElement.h */,
BA798E9C35F725B504C22F74 /* TyphoonParentReferenceHydratingPostProcessor.m */,
BA7988CB0A04D544852FC120 /* TyphoonParentReferenceHydratingPostProcessor.h */,
);
path = Internal;
sourceTree = "<group>";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@

- (NSInvocation*)asInvocationFor:(id)classOrInstance;

- (NSMethodSignature *) methodSignatureForClass:(Class)clazz;

- (void)setComponentDefinition:(TyphoonDefinition*)definition;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,24 +55,10 @@ - (NSInvocation*)asInvocationFor:(id)classOrInstance
{
invocation = [NSInvocation invocationWithMethodSignature:[[classOrInstance class] instanceMethodSignatureForSelector:_selector]];
}
[invocation setTarget:classOrInstance];
[invocation setSelector:_selector];
return invocation;
}

- (NSMethodSignature *) methodSignatureForClass:(Class)clazz
{
NSMethodSignature *signature = nil;

if (self.isClassMethod) {
signature = [clazz methodSignatureForSelector:_selector];
} else {
signature = [clazz instanceMethodSignatureForSelector:_selector];
}

return signature;
}


- (void)setComponentDefinition:(TyphoonDefinition*)definition
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@

- (id)initWithParameterIndex:(NSUInteger)index value:(id)value;

- (BOOL) isPrimitiveParameterForClass:(Class)aClass isClassMethod:(BOOL)isClassMethod;
- (BOOL) isPrimitiveParameterFor:(id)classOrInstance;

@end
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,13 @@ - (void)setInitializer:(TyphoonInitializer*)initializer
/* ====================================================================================================================================== */
#pragma mark - Interface Methods

- (BOOL) isPrimitiveParameterForClass:(Class)aClass isClassMethod:(BOOL)isClassMethod
{
NSArray* typeCodes = [TyphoonIntrospectionUtils typeCodesForSelector:_initializer.selector ofClass:aClass isClassMethod:isClassMethod];
- (BOOL) isPrimitiveParameterFor:(id)classOrInstance
{
BOOL isClass = class_isMetaClass(object_getClass(classOrInstance));

Class class = isClass ? classOrInstance : [classOrInstance class];

NSArray* typeCodes = [TyphoonIntrospectionUtils typeCodesForSelector:_initializer.selector ofClass:class isClassMethod:isClass];

return ![[typeCodes objectAtIndex:_index] isEqualToString:@"@"];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,4 @@
*/
- (TyphoonTypeDescriptor*)resolveTypeWith:(id)classOrInstance;

- (TyphoonTypeDescriptor*)resolveTypeWith:(Class)clazz isClassMethod:(BOOL)isClassMethod;


@end
Original file line number Diff line number Diff line change
Expand Up @@ -69,24 +69,6 @@ - (TyphoonTypeDescriptor*)resolveTypeWith:(id)classOrInstance
}
}

- (TyphoonTypeDescriptor*)resolveTypeWith:(Class)clazz isClassMethod:(BOOL)isClassMethod
{
if (_requiredType)
{
return [TyphoonTypeDescriptor descriptorWithClassOrProtocol:_requiredType];
}
else
{
NSArray* typeCodes = [TyphoonIntrospectionUtils typeCodesForSelector:_initializer.selector ofClass:clazz isClassMethod:isClassMethod];

if ([[typeCodes objectAtIndex:_index] isEqualToString:@"@"])
{
[NSException raise:NSInvalidArgumentException
format:@"Unless the type is primitive (int, BOOL, etc), initializer injection requires the required class to be specified. Eg: <argument parameterName=\"string\" value=\"http://dev.foobar.com/service/\" required-class=\"NSString\" />"];
}
return [TyphoonTypeDescriptor descriptorWithTypeCode:[typeCodes objectAtIndex:_index]];
}
}

/* ====================================================================================================================================== */
#pragma mark - Protocol Methods
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
*/
@interface TyphoonComponentFactory (InstanceBuilder)

- (id)buildInstanceWithDefinition:(TyphoonDefinition*)definition NS_RETURNS_RETAINED;
- (id)buildInstanceWithDefinition:(TyphoonDefinition*)definition;

- (id)buildSharedInstanceForDefinition:(TyphoonDefinition*)definition NS_RETURNS_RETAINED;
- (id)buildSharedInstanceForDefinition:(TyphoonDefinition*)definition;

- (void)injectPropertyDependenciesOn:(__autoreleasing id)instance withDefinition:(TyphoonDefinition*)definition;

Expand Down
Loading

0 comments on commit c57d18f

Please sign in to comment.