| // |
| // RACTestObject.m |
| // ReactiveCocoa |
| // |
| // Created by Josh Abernathy on 9/18/12. |
| // Copyright (c) 2012 GitHub, Inc. All rights reserved. |
| // |
| |
| #import "RACTestObject.h" |
| |
| @implementation RACTestObject |
| |
| - (void)dealloc { |
| free(_charPointerValue); |
| free((void *)_constCharPointerValue); |
| } |
| |
| - (void)setNilValueForKey:(NSString *)key { |
| if (!self.catchSetNilValueForKey) [super setNilValueForKey:key]; |
| } |
| |
| - (void)setCharPointerValue:(char *)charPointerValue { |
| if (charPointerValue == _charPointerValue) return; |
| free(_charPointerValue); |
| _charPointerValue = strdup(charPointerValue); |
| } |
| |
| - (void)setConstCharPointerValue:(const char *)constCharPointerValue { |
| if (constCharPointerValue == _constCharPointerValue) return; |
| free((void *)_constCharPointerValue); |
| _constCharPointerValue = strdup(constCharPointerValue); |
| } |
| |
| - (void)setObjectValue:(id)objectValue andIntegerValue:(NSInteger)integerValue { |
| self.hasInvokedSetObjectValueAndIntegerValue = YES; |
| self.objectValue = objectValue; |
| self.integerValue = integerValue; |
| } |
| |
| - (void)setObjectValue:(id)objectValue andSecondObjectValue:(id)secondObjectValue { |
| self.hasInvokedSetObjectValueAndSecondObjectValue = YES; |
| self.objectValue = objectValue; |
| self.secondObjectValue = secondObjectValue; |
| } |
| |
| - (void)setSlowObjectValue:(id)value { |
| [NSThread sleepForTimeInterval:0.02]; |
| _slowObjectValue = value; |
| } |
| |
| - (NSString *)combineObjectValue:(id)objectValue andIntegerValue:(NSInteger)integerValue { |
| return [NSString stringWithFormat:@"%@: %ld", objectValue, (long)integerValue]; |
| } |
| |
| - (NSString *)combineObjectValue:(id)objectValue andSecondObjectValue:(id)secondObjectValue { |
| return [NSString stringWithFormat:@"%@: %@", objectValue, secondObjectValue]; |
| } |
| |
| - (void)lifeIsGood:(id)sender { |
| |
| } |
| |
| + (void)lifeIsGood:(id)sender { |
| |
| } |
| |
| - (NSRange)returnRangeValueWithObjectValue:(id)objectValue andIntegerValue:(NSInteger)integerValue { |
| return NSMakeRange((NSUInteger)[objectValue integerValue], (NSUInteger)integerValue); |
| } |
| |
| - (RACTestObject *)dynamicObjectProperty { |
| return [self dynamicObjectMethod]; |
| } |
| |
| - (RACTestObject *)dynamicObjectMethod { |
| RACTestObject *testObject = [[RACTestObject alloc] init]; |
| testObject.integerValue = 42; |
| return testObject; |
| } |
| |
| - (void)write5ToIntPointer:(int *)intPointer { |
| NSCParameterAssert(intPointer != NULL); |
| *intPointer = 5; |
| } |
| |
| - (NSInteger)doubleInteger:(NSInteger)integer { |
| return integer * 2; |
| } |
| |
| - (char *)doubleString:(char *)string { |
| size_t doubledSize = strlen(string) * 2 + 1; |
| char *doubledString = malloc(sizeof(char) * doubledSize); |
| |
| doubledString[0] = '\0'; |
| strlcat(doubledString, string, doubledSize); |
| strlcat(doubledString, string, doubledSize); |
| |
| dispatch_async(dispatch_get_main_queue(), ^{ |
| free(doubledString); |
| }); |
| |
| return doubledString; |
| } |
| |
| - (const char *)doubleConstString:(const char *)string { |
| return [self doubleString:(char *)string]; |
| } |
| |
| - (RACTestStruct)doubleStruct:(RACTestStruct)testStruct { |
| testStruct.integerField *= 2; |
| testStruct.doubleField *= 2; |
| return testStruct; |
| } |
| |
| - (dispatch_block_t)wrapBlock:(dispatch_block_t)block { |
| return ^{ |
| block(); |
| }; |
| } |
| |
| @end |