首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从NSInvocation获取NSString结果?

如何从NSInvocation获取NSString结果?
EN

Stack Overflow用户
提问于 2011-03-08 03:30:26
回答 1查看 1.2K关注 0票数 3

以下代码按预期工作:

代码语言:javascript
复制
NSLog(@"%@", [NSString stringWithString:@"test"]; // Logs "test"

但是当我用NSInvocation替换它时,我得到了一个完全不同的结果:

代码语言:javascript
复制
Class class = [NSString class];
SEL selector = @selector(stringWithString:);

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
                          [class methodSignatureForSelector:selector]];
[invocation setTarget:class];
[invocation setSelector:selector];
[invocation setArgument:@"test" atIndex:2];
[invocation invoke];

id returnValue = nil;
[invocation getReturnValue:&returnValue];
NSLog(@"%@", returnValue); // Logs "NSCFString"

我上上下下找过了,但还是想不出。有什么帮助吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-08 03:45:35

从NSInvocation类引用:

当参数值为对象时,传递一个指向应从中复制对象的变量(或内存)的指针:

代码语言:javascript
复制
NSArray *anArray;    
[invocation setArgument:&anArray atIndex:3];

由于@“NSString”实际上是在构造测试实例,因此您应该使用

代码语言:javascript
复制
NSString *testString = @"test";
[invocation setArgument:&testString atIndex:2];
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5224265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档