간단한 질문. 아래 인터페이스에서 이중 별표의 의미는 무엇입니까? 그것은 NSError 포인터가 아니지만 무엇입니까?객관적인 C에서 **의 구문
- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error
간단한 질문. 아래 인터페이스에서 이중 별표의 의미는 무엇입니까? 그것은 NSError 포인터가 아니지만 무엇입니까?객관적인 C에서 **의 구문
- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error
포인터는 NSError
에 대한 포인터입니다. 그것은 "out 매개 변수"로 사용되거나 NSObject
인스턴스가 항상 포인터임을 고려하여 NSError
인스턴스에 대한 포인터로 생각할 수 있습니다.
당신은 다음과 같이 사용 : 구현 측면에서
NSError * outError = nil; << reserve place and a name for the out parameter
// pass the error so the client may return it to you:
BOOL ret = [obj checkResourceIsReachableAndReturnError:&outError];
if (nil != outError) { << the error was set in checkResourceIsReachableAndReturnError:
NSLog(@"Error: %@", outError); << log it
}
…
, 그것은 다음과 같습니다
- (BOOL)checkResourceIsReachableAndReturnError:(NSError**)outError
{
if (self.isThingReachable) {
// okay - the caller may not be interested in the error, test it:
if (0 != outError) {
// they are interested this time!
*outError = [NSError errorWithBlahBlahBlah];
}
return NO;
}
return YES;
}
당신은과 같이, NSError*
에 대한 참조를 전송하여 전화 :
NSError *myError = NULL;
[foo checkResourceIsReachableAndReturnError:&myError];
if (myError) {
/* look through info, handle error, etc. */
}
-checkResourceIsReachableAndReturnError:
메서드는 포인터를 수정할 수 있습니다 myError
새로운 NSError
에 대한 공간 할당을 포함합니다. 이렇게하면 myError
이 NULL
이 아닌지 단순히 확인하여 오류가 있는지 쉽게 확인할 수 있습니다.
블로그 게시물 : "Using NSError To Great Effect"을 확인하고 "포인터를 포인터에 전달"섹션을 특히주의하십시오.
포인터에 대한 위키 페이지의 섹션은 "Multiple Indirection"
입니다.