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的回复有效。谢谢你的回复