objective-c – NSInvocation类上的setSelector方法的目的是什么?

objective-c – NSInvocation类上的setSelector方法的目的是什么?,第1张

概述我不明白为什么当这些信息已经通过invocationWithMethodSignature传递时,我们必须在NSInvocation对象上调用setSelector方法. 要创建NSInvocation对象,我们执行以下 *** 作: SEL someSelector;NSMethodSignature *signature;NSInvocation *invocation;someSelecto 我不明白为什么当这些信息已经通过invocationWithMethodSignature传递时,我们必须在NSInvocation对象上调用setSelector方法.

要创建NSInvocation对象,我们执行以下 *** 作:

SEL someSelector;NSMethodSignature *signature;NSInvocation *invocation;someSelector = @selector(sayHelloWithString:);//Here we use the selector to create the signaturesignature = [SomeObject instanceMethodSignatureForSelector:someSelector];invocation = [NSInvocation invocationWithMethodSignature:signature];//Here,we again set the same selector[invocation setSelector:someSelector];[invocation setTarget:someObjectInstance];[invocation setArgument:@"loving C" atIndex:2];

请注意,我们将选择器传递给[SomeObject instanceMethodForSelector:someSelector];并再次调用setSelector:someSelector] ;.

有没有我失踪的东西?

解决方法 签名不是选择器.选择器是消息的名称.签名定义参数和返回值.您可以拥有许多具有相同签名的选择器,反之亦然.如果你看NSMethodSignature,你会注意到没有-selector方法;签名不带有特定的选择器.

请考虑以下几点

- (voID)setLocation:(CGfloat)aLocation;- (voID)setLocation:(MyLocation*)aLocation;

他们有相同的选择器@selector(setLocation :),但不同的签名.

- (voID)setX:(CGfloat)x;- (voID)setY:(CGfloat)y;

这些具有相同的签名,但不同的选择器.

来自ObjC编程语言的Selectors可能是理解这一点的有用参考.

总结

以上是内存溢出为你收集整理的objective-c – NSInvocation类上的setSelector方法的目的是什么?全部内容,希望文章能够帮你解决objective-c – NSInvocation类上的setSelector方法的目的是什么?所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1232826.html

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

发表评论

登录后才能评论

评论列表(0条)

保存