i test in NSInvocation with ARC, but it trigger memory leaks. In MRC, it work well. i do not know why.
- (NSArray *)a:(NSString *)a b:(NSString *)b c:(NSString *)c
{
return @[a, b, c];
}
- (void)testNSInvocation
{
NSMethodSignature *sig = [self methodSignatureForSelector:@selector(a:b:c:)];
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
[inv setTarget:self];
[inv setSelector:@selector(a:b:c:)];
NSString *a = @"a", *b = @"b", *c = @"c";
[inv setArgument:&a atIndex:2];
[inv setArgument:&b atIndex:3];
[inv setArgument:&c atIndex:4];
[inv retainArguments];
[inv invoke];
NSArray *ret;
[inv getReturnValue:&ret];//this is problem,but why?
NSLog(@"ret:%@", ret);
}