| // | |
| // 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 |