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

オブジェクトでは、ポインタ(eg、NSError*)を使用していることに注意してください。したがって、このメソッドを使用すると、ポインタ(eg、NSError**)へのポインタになります。ただし、を使用するBOOL場合は、BOOLへのポインタを使用する必要があります。つまり、2レベルではなく、1レベルの間接参照のみを使用します。したがって、あなたは意味します:

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

その後:

*extraBool = YES;
于 2011-09-01T05:04:45.400 に答える