在objective-c中是否有JavaScript应用方法?

在objective-c中是否有JavaScript应用方法?,第1张

概述所以基本上我正在使用window.location =“myobj:mymethod:myarg:myotherarg”来实现在objc中处理 JavaScript调用的典型方法,但是,我想知道是否有办法将一个参数数组应用于一个方法,类似于你在JavaScript中的方式. 通常我一直在做 -(void) mymethod:(NSArray*) arr{ //method knows ho 所以基本上我正在使用window.location =“myobj:mymethod:myarg:myotherarg”来实现在objc中处理 JavaScript调用的典型方法,但是,我想知道是否有办法将一个参数数组应用于一个方法,类似于你在JavaScript中的方式.

通常我一直在做

-(voID) mymethod:(NSArray*) arr{    //method kNows how many arguments it takes and what they mean at each index}

我更愿意这样做:

-(voID) mymethod:(Nsstring*) myarg myOtherArg: (Nsstring*) myotherarg{    //do stuff}

并有一个这样的方法:

+(voID) callMethod:(Nsstring*)selectorname withArgs: (NSArray*)args onObject:(ID) obj{    //implementation}[JEHelpers callMethod:selector withArgs:someArrayOfArgs onObject:myapp]

这可能吗?

解决方法 如果您知道没有方法将使用两个以上的参数,您可以使用performSelector:withObject:withObject:来执行这些调用.如果该方法少于两个参数,则将忽略未使用的withObject:字段.

+ (ID)callMethod:(Nsstring *)selectorname withArgs:(NSArray *)args onObject:(ID)obj {    ID arg1 = nil,arg2 = nil;    if([args count]) {        arg1 = [args objectAtIndex:0];        if([args count] > 1])           arg2 = [args objectAtIndex:1];    }    return [obj performSelector:NSSelectorFromString(selectorname)                     withObject:arg1 withObject:arg2];}

如果可能有两个以上的参数,则必须使用NSInvocation.此类允许您通过传递各种参数并定义选择器和对象来构造消息,然后发送消息并获取结果.

+ (ID)callMethod:(Nsstring *)selectorname withArgs:(NSArray *)args onObject:(ID)obj {    SEL sel = NSSelectorFromString(selectorname);    NSMethodSignature *signature = [obj methodSignatureForSelector:sel];    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];    [invocation setSelector:sel];    [invocation setTarget:obj];    NSUInteger index = 2;    for(ID arg in args) {        [invocation setArgument:&arg atIndex:index];        ++index;    }    ID result;    [invocation setReturnValue:&result];    [invocation invoke];    return result;}
总结

以上是内存溢出为你收集整理的在objective-c中是否有JavaScript应用方法?全部内容,希望文章能够帮你解决在objective-c中是否有JavaScript应用方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1004823.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存