Ios 动态对象的调用方法

Ios 动态对象的调用方法,ios,objective-c,dynamic-programming,Ios,Objective C,Dynamic Programming,我有一门课,像贝娄: @interface Validator : NSObject - (BOOL)validateParameters:(NSDictionary *)data; @end 我正在动态创建一个Validator类的对象,如: Class validatorClass = NSClassFromString(@"Validator"); id _validObject = [[validatorClass alloc] init]; 现在我想访问validateParame

我有一门课,像贝娄:

@interface Validator : NSObject
- (BOOL)validateParameters:(NSDictionary *)data;
@end
我正在动态创建一个Validator类的对象,如:

Class validatorClass = NSClassFromString(@"Validator");
id _validObject = [[validatorClass alloc] init];
现在我想访问validateParameters:方法,并将调用方方法中的返回值用于该动态对象


提前感谢:)

您可以使用下面的代码在
Objective-C

_validObject->是您的动态对象


希望这会有所帮助。

您可以使用下面的代码在
Objective-C

_validObject->是您的动态对象

希望这会有所帮助。

您可以使用这个方法

性能选择器: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索引是目标,选择器可以使用方法

性能选择器: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索引是一个目标和选择器

您是否尝试过
[\u validObject validateParameters:]?如何获取返回值然后,得到解决方案。无论如何,谢谢您是否尝试过
[\u validObject validateParameters:]?如何获取返回值然后,得到解决方案。不管怎样,谢谢你需要得到返回值,谢尔盖的回答有效。感谢您的回复。实际需要获取返回值,Sergey的回复有效。谢谢你的回复