
通常我一直在做
-(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应用方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)