NSError对象经常像这样使用(取自this previous question):
- (id)doStuff:(id)withAnotherObjc error:(NSError **)error;
我想用BOOL间接实现类似的东西:
- (id)doStuff:(id)withAnotherObjc andExtraBoolResult:(BOOL **)extraBool;
但我无法弄清楚如何使其正常工作。
对于涉及NSError的给定方法规范,正确的实现将涉及类似的事情(再次来自the previous question):
*error = [NSError errorWithDomain:...];
使用类似的逻辑,似乎这应该适用于BOOL间接:
*extraBool = &YES; // ERROR! Address expression must be an lvalue or a function designator
为什么这不起作用以及实现这个的正确方法是什么?
答案 0 :(得分:4)
请记住,对于对象,您正在使用指针(例如,NSError*
),因此使用此方法,您最终会得到指向指针的指针(例如,NSError**
) 。但是,在使用BOOL
时,您应该使用指向BOOL的指针:即,只有一个间接级别,而不是两个级别。因此,你的意思是:
- (id)doStuff:(id)withAnotherObjc andExtraBoolResult:(BOOL *)extraBool;
随后:
*extraBool = YES;