이 글은 What's the Point of (NSError**)error?이라는 기존 게시물과 유사하지만 제 질문은 약간 다릅니다. 이중 포인터가 작동하는 방식과 이것이 일반적인 iOS API 오류 패턴 인 방식을 이해합니다. 내 질문은 하나의 포인터 주위에 더, 왜이 코드가 작동하지 않습니다NSError * Nsrror **
NSError *error = nil;
if(![someObj someMethodWithError:error])
{
NSLog(@"Error: %@", [error localizedDescription]);
}
왜 메소드 구현의 할당은 포인터를 할당하지 않습니다
- (BOOL)someMethodWithError:(NSError *)error
{
...
if(errorOccured)
{
NSError *e = [[[NSError alloc] initWithDomain:@"" code:1 userInfo:nil] autorelease];
error = e;
return NO;
}
return YES;
}
를 사용하여 구현 새로운 NSError 객체?
우수 설명 madmik. 고맙습니다. 포인터가 값으로 전달된다는 것을 이제는 깨닫게됩니다. – Eric
@ madmik3 : 포인터를 "단순한 정수"라고 생각하는 것은 위험 할 수 있습니다.포인터는 주소를 포함하는 변수입니다. C가 포인터에서'++ '와 같은 산술 연산을 사용할 수 있다고해서 포인터가 정수처럼 동작하는 것은 아닙니다. 예를 들어'++'변수에'int'를 쓰면 그 값에 1을 더합니다. 그러나'++'타입의 변수가'int *'* 인 경우 값에 4를 더합니다. – pje
나는 그것들을 똑같은 것으로 생각하지는 않겠지 만, 변수를 전달하는 것에 응답하는 방법을 살펴보면 왜 때때로 이중 포인터가 필요한지 분명해진다. 그것은 단지 예일뿐입니다. :) – madmik3