我有一个类似下面的课程:
@interface Validator : NSObject
- (BOOL)validateParameters:(NSDictionary *)data;
@end
我正在动态创建Validator类的对象:
Class validatorClass = NSClassFromString(@"Validator");
id _validObject = [[validatorClass alloc] init];
现在我想访问那个validateParameters:方法,并使用调用方法中的返回值和该动态对象。
提前致谢:)
答案 0 :(得分:2)
您可以使用方法
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索引是目标和选择器
答案 1 :(得分:0)
您可以在Objective-C
_validObject - >是你的动态对象
Class validatorClass = NSClassFromString(@"Validator");
id _validObject = [[validatorClass alloc] init];
//Call with That dynamic Object
[_validObject validateParameters:[NSDictionary dictionary]];
希望这会有所帮助。