1

NSError 对象经常像这样使用(取自上一个问题):

- (id)doStuff:(id)withAnotherObjc error:(NSError **)error;

我想用 BOOL 间接实现类似的东西:

- (id)doStuff:(id)withAnotherObjc andExtraBoolResult:(BOOL **)extraBool;

但我不知道如何让它正常工作。

对于涉及 NSError 的给定方法规范,正确的实现将涉及类似(再次来自上一个问题):

*error = [NSError errorWithDomain:...];

使用类似的逻辑,这似乎应该适用于 BOOL 间接:

*extraBool = &YES; // ERROR! Address expression must be an lvalue or a function designator

为什么这不起作用,实现它的正确方法是什么?

4

1 回答 1

4

请记住,对于对象,您使用的是指针(例如,NSError*),因此使用此方法,您最终会得到一个指向指针的指针(例如,NSError**)。但是,在BOOL使用 时,您应该使用指向 BOOL 的指针:也就是说,只有一级间接,而不是二级。因此,您的意思是:

- (id)doStuff:(id)withAnotherObjc andExtraBoolResult:(BOOL *)extraBool;

随后:

*extraBool = YES;
于 2011-09-01T05:04:45.400 回答