diff --git a/src/Kernel/Third-Party/MAFuture/MABaseFuture.m b/src/Kernel/Third-Party/MAFuture/MABaseFuture.m index b7cdf36..ae7c6ac 100644 --- a/src/Kernel/Third-Party/MAFuture/MABaseFuture.m +++ b/src/Kernel/Third-Party/MAFuture/MABaseFuture.m @@ -11,6 +11,14 @@ - (id)init return self; } +- (void)dealloc +{ + [_value release]; + [_lock release]; + + [super dealloc]; +} + - (void)setFutureValue: (id)value { [_lock lock]; @@ -32,6 +40,8 @@ - (id)futureValue - (void)setFutureValueUnlocked: (id)value { + [value retain]; + [_value release]; _value = value; _resolved = YES; [_lock broadcast]; diff --git a/src/Kernel/Third-Party/MAFuture/MACompoundFuture.m b/src/Kernel/Third-Party/MAFuture/MACompoundFuture.m index d7a1dc0..e295d57 100644 --- a/src/Kernel/Third-Party/MAFuture/MACompoundFuture.m +++ b/src/Kernel/Third-Party/MAFuture/MACompoundFuture.m @@ -99,7 +99,7 @@ - (void)forwardInvocation: (NSInvocation *)invocation if(type[0] == '^' && type[1] == '@') { // get the existing pointer-to-object - void **parameterValue; + id *parameterValue; [invocation getArgument: ¶meterValue atIndex: i]; // if it's NULL, then we don't need to do anything @@ -109,7 +109,7 @@ - (void)forwardInvocation: (NSInvocation *)invocation // allocate space to receive the final computed value NSMutableData *newParameterSpace = [NSMutableData dataWithLength: sizeof(id)]; - void **newParameterValue = [newParameterSpace mutableBytes]; + id *newParameterValue = [newParameterSpace mutableBytes]; // set the parameter to point to the new space [invocation setArgument: &newParameterValue atIndex: i]; @@ -127,6 +127,7 @@ - (void)forwardInvocation: (NSInvocation *)invocation [parameterDatas self]; return (id)nil; }]; + [invocationFuture autorelease]; } [parameterDatas addObject: newParameterSpace]; @@ -136,11 +137,14 @@ - (void)forwardInvocation: (NSInvocation *)invocation // capture the NSMutableData to ensure that it stays live // interior pointer problem [newParameterSpace self]; - return (__bridge id) *newParameterValue; + return *newParameterValue; }]; // and now "return" it - *parameterValue = (__bridge void *)(parameterFuture); + *parameterValue = parameterFuture; + + // memory management + [parameterFuture autorelease]; } } } @@ -157,6 +161,7 @@ - (void)forwardInvocation: (NSInvocation *)invocation }]; LOG(@"forwardInvocation: %p creating new compound future %p", invocation, returnFuture); [invocation setReturnValue: &returnFuture]; + [returnFuture release]; } } @@ -171,7 +176,7 @@ id MACompoundBackgroundFuture(id (^block)(void)) return [blockFuture resolveFuture]; }]; - return compoundFuture; + return [compoundFuture autorelease]; } #undef MACompoundLazyFuture @@ -179,5 +184,5 @@ id MACompoundLazyFuture(id (^block)(void)) { _MACompoundFuture *compoundFuture = [[_MACompoundFuture alloc] initWithBlock: block]; - return compoundFuture; + return [compoundFuture autorelease]; } diff --git a/src/Kernel/Third-Party/MAFuture/MAFuture.m b/src/Kernel/Third-Party/MAFuture/MAFuture.m index 8a12f53..5261594 100644 --- a/src/Kernel/Third-Party/MAFuture/MAFuture.m +++ b/src/Kernel/Third-Party/MAFuture/MAFuture.m @@ -1,6 +1,5 @@ #import #import -#import #import "MABaseFuture.h" #import "MAFuture.h" @@ -24,7 +23,7 @@ - (id)forwardingTargetForSelector: (SEL)sel #if ENABLE_LOGGING id resolvedFuture = [self resolveFuture]; if (resolvedFuture == nil) { - LOG(@"WARNING: [%@ resolveFuture] has returned nil. You must avoid to return nil objects from the block", [self class]); + LOG(@"WARNING: [%@ resolveFuture] has returned nil. You must avoid to return nil objects from the block", NSStringFromClass(isa)); } return resolvedFuture; #else @@ -86,12 +85,19 @@ - (id)initWithBlock: (id (^)(void))block return self; } +- (void)dealloc +{ + [_block release]; + [super dealloc]; +} + - (id)resolveFuture { [_lock lock]; if(![self futureHasResolved]) { [self setFutureValueUnlocked: _block()]; + [_block release]; _block = nil; } [_lock unlock]; @@ -103,13 +109,13 @@ - (id)resolveFuture #undef MABackgroundFuture id MABackgroundFuture(id (^block)(void)) { - return [[_MABackgroundBlockFuture alloc] initWithBlock: block]; + return [[[_MABackgroundBlockFuture alloc] initWithBlock: block] autorelease]; } #undef MALazyFuture id MALazyFuture(id (^block)(void)) { - return [[_MALazyBlockFuture alloc] initWithBlock: block]; + return [[[_MALazyBlockFuture alloc] initWithBlock: block] autorelease]; } #pragma mark - @@ -153,7 +159,7 @@ - (void)setCountOfUsers:(NSInteger)newCountOfUsers { - (id)futureValue { - return [super futureValue]; + return [[[super futureValue] retain] autorelease]; } @@ -174,6 +180,7 @@ - (void)setIsObservingUnlocked:(BOOL)newIsObserving { - (void)dealloc { [self setIsObservingUnlocked:NO]; + [super dealloc]; } @@ -202,7 +209,7 @@ - (void)processMemoryWarning { - (void)processMemoryWarningUnlocked { // TODO: must be checked when resolvation algorithm is changed. _resolved = NO; - _value = nil; + [_value release], _value = nil; } @@ -217,7 +224,7 @@ - (void)invalidateUnlocked { // TODO: must be checked when resolvation algorithm is changed. [self setIsObservingUnlocked:NO]; _resolved = NO; - _value = nil; + [_value release], _value = nil; } @end @@ -229,7 +236,7 @@ id IKMemoryAwareFutureCreate(id (^block)(void)) { #undef IKMemoryAwareFuture id IKMemoryAwareFuture(id (^block)(void)) { - return IKMemoryAwareFutureCreate(block); + return [IKMemoryAwareFutureCreate(block) autorelease]; } void IKMemoryAwareFutureBeginContentAccess(id future) { @@ -251,8 +258,8 @@ void IKInvalidateMemoryAwareFuture(id future) { NSString* IKMemoryAwareFuturesDirectory() { static NSString* FuturesDirectory = nil; if (FuturesDirectory == nil) { - FuturesDirectory = [NSTemporaryDirectory() stringByAppendingPathComponent:@"futures"]; - }; + FuturesDirectory = [[NSTemporaryDirectory() stringByAppendingPathComponent:@"futures"] retain]; + } return FuturesDirectory; } @@ -294,6 +301,7 @@ - (void)dealloc { #else [[NSFileManager defaultManager] removeItemAtPath:IKMemoryAwareFuturePath(self) error:NULL]; #endif + [super dealloc]; } @@ -336,7 +344,7 @@ - (BOOL)archiveValueUnlocked { - (BOOL)unarchiveValueUnlocked { - id value = [NSKeyedUnarchiver unarchiveObjectWithFile:IKMemoryAwareFuturePath(self)]; + id value = [[NSKeyedUnarchiver unarchiveObjectWithFile:IKMemoryAwareFuturePath(self)] retain]; if (value != nil) { [self setFutureValueUnlocked:value]; } @@ -364,7 +372,7 @@ id IKAutoArchivingMemoryAwareFutureCreate(id (^block)(void)) { #undef IKAutoArchivingMemoryAwareFuture id IKAutoArchivingMemoryAwareFuture(id (^block)(void)) { - return IKAutoArchivingMemoryAwareFutureCreate(block); + return [IKAutoArchivingMemoryAwareFutureCreate(block) autorelease]; } #endif // __IPHONE_4_0 diff --git a/src/Kernel/Third-Party/MAFuture/MAMethodSignatureCache.m b/src/Kernel/Third-Party/MAFuture/MAMethodSignatureCache.m index a3ec24b..695c9a6 100644 --- a/src/Kernel/Third-Party/MAFuture/MAMethodSignatureCache.m +++ b/src/Kernel/Third-Party/MAFuture/MAMethodSignatureCache.m @@ -67,7 +67,7 @@ - (void)_clearCache - (NSMethodSignature *)_searchAllClassesForSignature: (SEL)sel { int count = objc_getClassList(NULL, 0); - Class *classes = (Class *)malloc(sizeof(*classes) * count); + Class *classes = malloc(sizeof(*classes) * count); objc_getClassList(classes, count); NSMethodSignature *sig = nil; @@ -116,7 +116,7 @@ - (NSMethodSignature *)cachedMethodSignatureForSelector: (SEL)sel if(!sig) sig = (id)[NSNull null]; #ifdef __IPHONE_4_0 - CFDictionarySetValue(_cache, sel, (__bridge const void *)(sig)); + CFDictionarySetValue(_cache, sel, sig); #else [_cache setObject: sig forKey: (id)sel]; #endif //__IPHONE_4_0 diff --git a/src/Kernel/Third-Party/MAFuture/MAProxy.h b/src/Kernel/Third-Party/MAFuture/MAProxy.h index 15d14cc..04a4578 100644 --- a/src/Kernel/Third-Party/MAFuture/MAProxy.h +++ b/src/Kernel/Third-Party/MAFuture/MAProxy.h @@ -1,6 +1,17 @@ -@interface MAProxy : NSObject +@interface MAProxy : NSObject +{ + int32_t _refcountMinusOne; +} +//+ (id)alloc; +//- (void)dealloc; + +- (void)finalize; - (BOOL)isProxy; +- (id)retain; +- (void)release; +- (id)autorelease; +- (NSUInteger)retainCount; @end diff --git a/src/Kernel/Third-Party/MAFuture/MAProxy.m b/src/Kernel/Third-Party/MAFuture/MAProxy.m index 71882c5..9f0394f 100644 --- a/src/Kernel/Third-Party/MAFuture/MAProxy.m +++ b/src/Kernel/Third-Party/MAFuture/MAProxy.m @@ -11,10 +11,46 @@ + (void)initialize // runtime requires an implementation } +//+ (id)alloc +//{ +// return NSAllocateObject(self, 0, NULL); +//} +// +//- (void)dealloc +//{ +// NSDeallocateObject(self); +//} + +- (void)finalize +{ +} + - (BOOL)isProxy { return YES; } +- (id)retain +{ + OSAtomicIncrement32(&_refcountMinusOne); + return self; +} + +- (void)release +{ + if(OSAtomicDecrement32(&_refcountMinusOne) == -1) + [self dealloc]; +} + +- (id)autorelease +{ + [NSAutoreleasePool addObject: self]; + return self; +} + +- (NSUInteger)retainCount +{ + return _refcountMinusOne + 1; +} @end diff --git a/src/Kernel/Third-Party/MAFuture/tester.m b/src/Kernel/Third-Party/MAFuture/tester.m index d160882..5801239 100644 --- a/src/Kernel/Third-Party/MAFuture/tester.m +++ b/src/Kernel/Third-Party/MAFuture/tester.m @@ -6,7 +6,7 @@ #import "MAFuture.h" // make NSLog properly reentrant -//#define NSLog(...) NSLog(@"%@", [NSString stringWithFormat: __VA_ARGS__]) +#define NSLog(...) NSLog(@"%@", [NSString stringWithFormat: __VA_ARGS__]) @implementation NSObject (ObjectReturnAndPrimitiveByReference) @@ -30,7 +30,7 @@ static void TestOutParameters(void) NSError *baderr = nil; NSString *badstr = [nsstring stringWithContentsOfFile: @"/this/file/does/not/exist" encoding: NSUTF8StringEncoding error: &baderr]; NSError *gooderr = nil; - NSString *goodstr = [nsstring stringWithContentsOfFile: @"/Users/pcolton/Desktop/test.css" encoding: NSUTF8StringEncoding error: &gooderr]; + NSString *goodstr = [nsstring stringWithContentsOfFile: @"/etc/passwd" encoding: NSUTF8StringEncoding error: &gooderr]; NSLog(@"stringWithContentsOfFile, pointers: %p error: %p", badstr, baderr); NSLog(@"stringWithContentsOfFile, descriptions: %@ error: %@", badstr, baderr); NSLog(@"stringWithContentsOfFile, pointers: %p error: %p", goodstr, gooderr); @@ -45,78 +45,80 @@ static void TestOutParameters(void) NSLog(@"Testing out parameters whose futures are not retained"); nsstring = MACompoundLazyFuture(^{ NSLog(@"Fetching NSString class"); return [NSString class]; }); + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; badstr = [nsstring stringWithContentsOfFile: @"/this/file/does/not/exist" encoding: NSUTF8StringEncoding error: &baderr]; + [badstr retain]; + [pool release]; NSLog(@"nonretained out future destroyed now"); NSLog(@"nonretained out future result: %@", badstr); + [badstr release]; } int main(int argc, char **argv) { - @autoreleasepool { - - @try - { - NSLog(@"start"); - NSString *future = MABackgroundFuture(^{ - NSLog(@"Computing future\n"); - usleep(100000); - return @"future result"; - }); - NSLog(@"future created"); - NSString *lazyFuture = MALazyFuture(^{ - NSLog(@"Computing lazy future\n"); - usleep(100000); - return @"lazy future result"; - }); - NSLog(@"lazy future created"); - NSString *compoundFuture = MACompoundBackgroundFuture(^{ - NSLog(@"Computing compound future\n"); - usleep(100000); - return @"compound future result"; - }); - NSLog(@"compound future created"); - NSString *compoundLazyFuture = MACompoundLazyFuture(^{ - NSLog(@"Computing compound lazy future\n"); - usleep(100000); - return @"compound future result"; - }); - NSLog(@"compound lazy future created"); - - id nilFuture = MABackgroundFuture(^{ return (__bridge id)nil; }); - id nilCompoundFuture = MACompoundBackgroundFuture(^{ return (__bridge id)nil; }); - - NSLog(@"future: %@", future); - NSLog(@"lazy future: %@", lazyFuture); - NSString *val = [compoundFuture stringByAppendingString: @" suffix"]; - NSLog(@"** compound future: %@", val); - NSLog(@"** compound lazy future: %@", [compoundLazyFuture stringByAppendingString: @" suffix"]); - - NSString *future1 = MABackgroundFuture(^{ - NSLog(@"Computing future\n"); - usleep(100000); - return @"future result"; - }); - NSString *future2 = MABackgroundFuture(^{ - NSLog(@"Computing future\n"); - usleep(100000); - return @"future result"; - }); - NSLog(@"%p == %p? %llx %llx %s", future1, future2, (long long)[future1 hash], (long long)[future2 hash], [future1 isEqual: future2] ? "YES" : "NO"); - NSLog(@"nil future: %@", nilFuture); - NSLog(@"nil compound future: %@", nilCompoundFuture); - NSLog(@"future responds to description method: %d", [future respondsToSelector: @selector(description)]); - - TestOutParameters(); - } - @catch(id exception) - { - fprintf(stderr, "Exception: %s\n", [[exception description] UTF8String]); - } + [NSAutoreleasePool new]; + + @try + { + NSLog(@"start"); + NSString *future = MABackgroundFuture(^{ + NSLog(@"Computing future\n"); + usleep(100000); + return @"future result"; + }); + NSLog(@"future created"); + NSString *lazyFuture = MALazyFuture(^{ + NSLog(@"Computing lazy future\n"); + usleep(100000); + return @"lazy future result"; + }); + NSLog(@"lazy future created"); + NSString *compoundFuture = MACompoundBackgroundFuture(^{ + NSLog(@"Computing compound future\n"); + usleep(100000); + return @"compound future result"; + }); + NSLog(@"compound future created"); + NSString *compoundLazyFuture = MACompoundLazyFuture(^{ + NSLog(@"Computing compound lazy future\n"); + usleep(100000); + return @"compound future result"; + }); + NSLog(@"compound lazy future created"); + + id nilFuture = MABackgroundFuture(^{ return nil; }); + id nilCompoundFuture = MACompoundBackgroundFuture(^{ return nil; }); + + NSLog(@"future: %@", future); + NSLog(@"lazy future: %@", lazyFuture); + NSLog(@"compound future: %@", [compoundFuture stringByAppendingString: @" suffix"]); + NSLog(@"compound lazy future: %@", [compoundLazyFuture stringByAppendingString: @" suffix"]); - // unsigned int count; - // Method *list = class_copyMethodList([NSProxy class], &count); - // for(unsigned i = 0; i < count; i++) - // NSLog(@"%@", NSStringFromSelector(method_getName(list[i]))); + NSString *future1 = MABackgroundFuture(^{ + NSLog(@"Computing future\n"); + usleep(100000); + return @"future result"; + }); + NSString *future2 = MABackgroundFuture(^{ + NSLog(@"Computing future\n"); + usleep(100000); + return @"future result"; + }); + NSLog(@"%p == %p? %llx %llx %s", future1, future2, (long long)[future1 hash], (long long)[future2 hash], [future1 isEqual: future2] ? "YES" : "NO"); + NSLog(@"nil future: %@", nilFuture); + NSLog(@"nil compound future: %@", nilCompoundFuture); + NSLog(@"future responds to description method: %d", [future respondsToSelector: @selector(description)]); + + TestOutParameters(); + } + @catch(id exception) + { + fprintf(stderr, "Exception: %s\n", [[exception description] UTF8String]); } + +// unsigned int count; +// Method *list = class_copyMethodList([NSProxy class], &count); +// for(unsigned i = 0; i < count; i++) +// NSLog(@"%@", NSStringFromSelector(method_getName(list[i]))); } diff --git a/src/pixate-freestyle.xcodeproj/project.pbxproj b/src/pixate-freestyle.xcodeproj/project.pbxproj index 60e1cdd..dc6723b 100644 --- a/src/pixate-freestyle.xcodeproj/project.pbxproj +++ b/src/pixate-freestyle.xcodeproj/project.pbxproj @@ -10,28 +10,28 @@ 9C08810C18BE9ECA0079A71B /* libpixate-freestyle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C84A63A18AE9CB600E7CDA7 /* libpixate-freestyle.a */; }; 9C0B706818C52EEA00D2E7FD /* Version.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C4DB80218AEA48000AE80B2 /* Version.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9C23047D18DA126300969D18 /* MABaseFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C23047118DA126300969D18 /* MABaseFuture.h */; }; - 9C23047E18DA126300969D18 /* MABaseFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047218DA126300969D18 /* MABaseFuture.m */; }; + 9C23047E18DA126300969D18 /* MABaseFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047218DA126300969D18 /* MABaseFuture.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9C23047F18DA126300969D18 /* MABaseFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047218DA126300969D18 /* MABaseFuture.m */; }; 9C23048018DA126300969D18 /* MACompoundFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C23047318DA126300969D18 /* MACompoundFuture.h */; }; - 9C23048118DA126300969D18 /* MACompoundFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047418DA126300969D18 /* MACompoundFuture.m */; }; + 9C23048118DA126300969D18 /* MACompoundFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047418DA126300969D18 /* MACompoundFuture.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9C23048218DA126300969D18 /* MACompoundFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047418DA126300969D18 /* MACompoundFuture.m */; }; 9C23048318DA126300969D18 /* MAFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C23047518DA126300969D18 /* MAFuture.h */; }; - 9C23048418DA126300969D18 /* MAFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047618DA126300969D18 /* MAFuture.m */; }; + 9C23048418DA126300969D18 /* MAFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047618DA126300969D18 /* MAFuture.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9C23048518DA126300969D18 /* MAFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047618DA126300969D18 /* MAFuture.m */; }; 9C23048618DA126300969D18 /* MAFutureInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C23047718DA126300969D18 /* MAFutureInternal.h */; }; 9C23048718DA126300969D18 /* MAMethodSignatureCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C23047818DA126300969D18 /* MAMethodSignatureCache.h */; }; - 9C23048818DA126300969D18 /* MAMethodSignatureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047918DA126300969D18 /* MAMethodSignatureCache.m */; }; + 9C23048818DA126300969D18 /* MAMethodSignatureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047918DA126300969D18 /* MAMethodSignatureCache.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9C23048918DA126300969D18 /* MAMethodSignatureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047918DA126300969D18 /* MAMethodSignatureCache.m */; }; 9C23048A18DA126300969D18 /* MAProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C23047A18DA126300969D18 /* MAProxy.h */; }; - 9C23048B18DA126300969D18 /* MAProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047B18DA126300969D18 /* MAProxy.m */; }; + 9C23048B18DA126300969D18 /* MAProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047B18DA126300969D18 /* MAProxy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9C23048C18DA126300969D18 /* MAProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047B18DA126300969D18 /* MAProxy.m */; }; 9C23049618DA27CE00969D18 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C84A63D18AE9CB600E7CDA7 /* Foundation.framework */; }; - 9C2304A118DA280100969D18 /* tester.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047C18DA126300969D18 /* tester.m */; }; - 9C2304A218DA285200969D18 /* MABaseFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047218DA126300969D18 /* MABaseFuture.m */; }; - 9C2304A318DA285200969D18 /* MACompoundFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047418DA126300969D18 /* MACompoundFuture.m */; }; - 9C2304A418DA285200969D18 /* MAFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047618DA126300969D18 /* MAFuture.m */; }; - 9C2304A518DA285200969D18 /* MAMethodSignatureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047918DA126300969D18 /* MAMethodSignatureCache.m */; }; - 9C2304A618DA285200969D18 /* MAProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047B18DA126300969D18 /* MAProxy.m */; }; + 9C2304A118DA280100969D18 /* tester.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047C18DA126300969D18 /* tester.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9C2304A218DA285200969D18 /* MABaseFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047218DA126300969D18 /* MABaseFuture.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9C2304A318DA285200969D18 /* MACompoundFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047418DA126300969D18 /* MACompoundFuture.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9C2304A418DA285200969D18 /* MAFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047618DA126300969D18 /* MAFuture.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9C2304A518DA285200969D18 /* MAMethodSignatureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047918DA126300969D18 /* MAMethodSignatureCache.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9C2304A618DA285200969D18 /* MAProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C23047B18DA126300969D18 /* MAProxy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 9C31780B18BE936B00F4B79D /* ImageBasedTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C3174FF18BE936A00F4B79D /* ImageBasedTests.m */; }; 9C31780C18BE936B00F4B79D /* PXShapeRenderingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C31750018BE936A00F4B79D /* PXShapeRenderingTests.m */; }; 9C31780D18BE936B00F4B79D /* PXSVGRenderingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C31750118BE936A00F4B79D /* PXSVGRenderingTests.m */; };