ios – 使用两个以上的参数在Objective-C中执行动态类方法调用

ios – 使用两个以上的参数在Objective-C中执行动态类方法调用,第1张

概述我有一个方法可以动态创建不同类的新对象,并希望能够在创建这些类时对这些类执行选择.使用performSelector:withObject:会有效,但方法有四个参数.我使用NSInvocation尝试了以下代码,但是有一个错误,它是一个无法识别的选择器. NSInvocation *call = [NSInvocation invocationWithMethodSignature:[NSClas 我有一个方法可以动态创建不同类的新对象,并希望能够在创建这些类时对这些类执行选择.使用performSelector:withObject:会有效,但方法有四个参数.我使用NSInvocation尝试了以下代码,但是有一个错误,它是一个无法识别的选择器.

NSInvocation *call = [NSInvocation invocationWithMethodSignature:[NSClassFromString(classname) methodSignatureForSelector:@selector(packWithname:value:writer:forClass:)]];[call setArgument:&arg1 atIndex:0];[call setArgument:&arg2 atIndex:1];[call setArgument:&arg3 atIndex:2];[call setArgument:&arg4 atIndex:3];call.target = NSClassFromString(classname);[call invoke];

它还会生成以下日志语句:

*** NSForwarding: warning: selector (0x8ed78d0) for message '[garbled random characters]'does not match selector kNown to Objective C runtime (0x8b0cd30)-- abort

我还尝试使用alloc / init创建NSInvocation并设置@selector,如下所示:

NSInvocation *call = [[NSInvocation alloc] init];call.selector = @selector(nameofselector);

然而,这导致呼叫为零,所以我想这是不允许的.

我是否遗漏了有关NSInvocation如何工作的内容或者有更聪明的方法来做到这一点?

解决方法 索引0和1处的参数不是方法调用的前两个显式参数,而是隐式self和_cmd参数.请使用索引2,3,4和5. 总结

以上是内存溢出为你收集整理的ios – 使用两个以上的参数在Objective-C中执行动态类方法调用全部内容,希望文章能够帮你解决ios – 使用两个以上的参数在Objective-C中执行动态类方法调用所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存