//--------------------------------------------------------------------------------------- // $Id$ // Copyright (c) 2009 by Mulle Kybernetik. See License file for details. //--------------------------------------------------------------------------------------- #import "NSMethodSignature+OCMAdditions.h" #import "OCMReturnValueProvider.h" @implementation OCMReturnValueProvider - (id)initWithValue:(id)aValue { self = [super init]; returnValue = [aValue retain]; return self; } - (void)dealloc { [returnValue release]; [super dealloc]; } - (void)handleInvocation:(NSInvocation *)anInvocation { const char *returnType = [[anInvocation methodSignature] methodReturnTypeWithoutQualifiers]; if(strcmp(returnType, @encode(id)) != 0) @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Expected invocation with object return type. Did you mean to use andReturnValue: instead?" userInfo:nil]; [anInvocation setReturnValue:&returnValue]; } @end