【发布时间】:2016-08-12 20:48:47
【问题描述】:
在我的项目中,我有这样的功能:
- (void)doSomething:(NSError**)error {
...
}
我需要使用函数 performSelector:onThread:withObject:waitUntilDone: 在另一个线程上调用此函数,如下所示:
[self performSelector:@selector(doSomething:) onThread:anotherThread withObject:??? waitUntilDone:NO];
但是函数参数的类型是NSError**。我正在考虑将函数-(void)doSomething: 的参数类型从NSError** 重构为NSValue*,并将NSValue* 类型作为参数传递。
这意味着,我需要将&error(类型为NSError **)包装成NSValue,并将其作为参数传递,然后再将其解包。如何用NSValue类包装和解包NSError**?
【问题讨论】:
-
为什么需要将
NSError包裹在NSValue中? -
我想包装
NSError**并将包装后的 NSValue 作为 argment 传递,然后调用 performSelector:withObject , -
1) 为什么你需要用
NSValue包裹NSError只是为了将它传递给performSelector:withObject:?没必要把它包起来。 2) 为什么需要使用performSelector:withObject:?总有比这更好的方法。我建议更新您的问题,详细说明您真正需要完成的工作,以便人们提供更好的建议。 -
我将更详细地更新我的问题,谢谢。
-
更新了更多细节
标签: ios objective-c nserror nsvalue