要创建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方法的目的是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)