用NSInvocation来实现对象的任意方法的调用

用NSInvocation来实现对象的任意方法的调用

- (int)sumABC {
    SEL sel = @selector(sumWithA:B:C:);
    NSMethodSignature *methodSignature = [self methodSignatureForSelector:sel];
    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:methodSignature];
    [invocation setSelector:sel];
    [invocation setTarget:self];
    
    int a = 1, b = 2, c = 3;
    [invocation setArgument:&a atIndex:2];
    [invocation setArgument:&b atIndex:3];
    [invocation setArgument:&c atIndex:4];
    
    [invocation invoke];
    
    int sum;
    [invocation getReturnValue:&sum];
    
    NSLog(@"sum is %d", sum);
    
    return sum;
}

- (int)sumWithA:(int)A B:(int)B C:(int)C {
    return A + B + C;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容