4

重複の可能性:
ここで「error:&error」が使用されるのはなぜですか(objective-c)

AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
                                                                    error:&error];

&上記のコードで記号はどういう意味ですか ?

4

3 に答える 3

4

error はエラー オブジェクトへのポインタです。&error は、エラー オブジェクトへのポインターへのポインターです。エラーへのポインターへのポインターをメソッドに渡すと、エラーが発生した場合、メソッドはエラー オブジェクトを割り当て、それを指すようにエラー ポインターを設定できます。

于 2012-10-25T04:10:57.563 に答える
3

& 記号は、前に付けられた変数のアドレスを渡すために使用されます。値渡しではなく、参照渡しとも呼ばれます。&error はエラーのアドレスを意味します。エラーはポインターとして定義されているため、&error はエラーの実際のストアへのポインターのアドレスです。

呼び出すメソッドのパラメーターが **error として定義されている可能性があるため、ポインターへのポインターまたはポインターへの参照を渡す必要があります。

メソッドがパラメーターとして *error を使用する場合、メソッドはパラメーターが指す値を変更できます。この値は、メソッドが制御を返すときに、呼び出し元が参照できます。ただし、メソッドが **error をパラメーターとして使用する場合、メソッドはポインター自体を変更して、別の場所を指すようにすることもできます。これは、呼び出し元のエラー変数に新しいポインターが含まれることを意味します。

ここに例があります

    -(void)changePointerOfString:(NSString **)strVal {
        *strVal = @"New Value";
    }

    -(void)caller {
        NSString *myStr = @"Old Value";      // myStr has value 'Old Value'
        [self changePointerOfString:&myStr]; // myStr has value 'New Value'
    }
于 2012-10-25T04:38:19.097 に答える
1

これは、アドレス演算子です。指示対象を指すポインタを生成します。この場合、errorNSError *;です。アドレスを取得し、発生したエラーを示すためにそのポインタを介してAVCaptureDeviceInput deviceInputWithDevice:error:変更する場合があります。error

于 2012-10-25T04:04:46.760 に答える