我有一个类如下:
@interface Validator : NSObject
- (BOOL)validateParameters:(NSDictionary *)data;
@end
我正在动态地创建一个 Validator 类的对象,例如:
Class validatorClass = NSClassFromString(@"Validator");
id _validObject = [[validatorClass alloc] init];
现在我想访问该 validateParameters: 方法,并在调用方方法中使用该动态对象的返回值。
提前致谢:)
最佳答案
你可以使用方法
performSelector:withObject:
如果你只有一个参数。这是例子:
Class validatorClass = NSClassFromString(@"Validator");
id _validObject = [[validatorClass alloc] init];
BOOL result = [_validObject performSelector:@selector(validateParameters:) withObject:[NSData data]];
您也可以使用 NSInvocation 类。
Class validatorClass = NSClassFromString(@"Validator");
id _validObject = [[validatorClass alloc] init];
NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:[_validObject methodSignatureForSelector:@selector(validateParameters:)]];
invocation.target = _validObject;
invocation.selector =@selector(validateParameters:);
[invocation setArgument:(__bridge void * _Nonnull)([NSData data]) atIndex:2];
[invocation invoke];
BOOL result;
[invocation getReturnValue:&result];
注意:您需要添加以 2 索引开头的参数,因为 0 和 1 索引是目标和选择器
关于ios - 动态对象的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953382/