可能重复:
why is “error:&error” used here (objective-c)Objective-C中的“&error”是什么意思?
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
error:&error];
什么是&
符号指的是在上面的代码?
可能重复:
why is “error:&error” used here (objective-c)Objective-C中的“&error”是什么意思?
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
error:&error];
什么是&
符号指的是在上面的代码?
这是地址 - 运算符;它会产生一个指向指示对象的指针。在这种情况下,error
是NSError *
; AVCaptureDeviceInput deviceInputWithDevice: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'
}
我建议在看这些问题[为什么 - 是 - errorerror使用的,这里目标-C(http://stackoverflow.com/questions/8334518/why -is-errorerror-used-here-objective-c)和[why-passing-error-instead-of-error-in-cocoa-programming](http://stackoverflow.com/questions/4765519/why-passing-错误而不是错误在可可编程) – ptc
[C指南 - 1.4.1指针和地址操作员](http://www.acm.uiuc.edu/webmonkeys/book/c_guide/1.4。 HTML) – Jay