AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
error:&error];
&
上記のコードで記号はどういう意味ですか ?
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
error:&error];
&
上記のコードで記号はどういう意味ですか ?
error はエラー オブジェクトへのポインタです。&error は、エラー オブジェクトへのポインターへのポインターです。エラーへのポインターへのポインターをメソッドに渡すと、エラーが発生した場合、メソッドはエラー オブジェクトを割り当て、それを指すようにエラー ポインターを設定できます。
& 記号は、前に付けられた変数のアドレスを渡すために使用されます。値渡しではなく、参照渡しとも呼ばれます。&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'
}
これは、アドレス演算子です。指示対象を指すポインタを生成します。この場合、error
はNSError *
;です。アドレスを取得し、発生したエラーを示すためにそのポインタを介してAVCaptureDeviceInput deviceInputWithDevice:error:
変更する場合があります。error