이 질문은 매우 기본적인 질문 인 것으로 알고 있습니다 만, 나는 항상 기본 질문을 설명하고 이해하는 것이 깨끗하고 작동 가능한 코드를 구축하는 열쇠라고 생각했습니다. 오류를 생성 할 때 나는 유명한 '잠재적 널 역 참조'를 얻을 엑스 코드에서 '분석'실행하여NSError를 다룰 때 '잠재적 인 null dereference'이해하기
-(BOOL)validateForInsert:(NSError *__autoreleasing *)error {
[super validateForInsert:error];
return [self validateInternal:error];
}
-(BOOL)validateInternal:(NSError *__autoreleasing *)error {
// checking attributes and build userInfo error
if(anyErrors) {
*error = [NSError errorWithDomain:appDomain code:200 userInfo:details];
return NO;
}
return YES;
}
: 은 내가 CoreData 개체에서 다음 코드 조각이있다. 컴파일러는 경고를하지 않고 코드는 항상 작동합니다. 이것은 컴파일러가 저에 대해 경고하지 않는 이유는 무엇입니까?
코드에 와서 나는 해결책을 알고있다. (오류! = nil)을 확인하는 것이지만, 나는 이것에서 아주 길을 잃는다. 질문은 NSError * _autoreleasing *의 의미에서 처음부터 시작합니다. 왜 주변의 별이 맞습니까? 어떤 포인터에 대한 포인터가되어야합니까?
validateForInsert를 호출하려면 다음과 같이 가정합니다. * _autoreleasing * 객체를 어떻게 만들 수 있습니까?
다음 질문은 위의 질문과 관련 있다고 생각합니다. 처음부터 오류를 작성하는 경우 왜 처음부터 nil인지 확인해야하는 이유는 무엇입니까?
마지막으로 중요한 것은 코드가 제대로 작동하고 오류가 가로채는 경우입니다. 오류가 발생하거나 중단 될 수있는 사례를 발견 할 수 있습니까? CoreData를 사용하고 있다고 말했기 때문에, 일반적인 예가 좋지만 CoreData와 관련된 또 다른 예가 좋습니다.
감사
나는 autoreleasing의 의미를 완전히 잃어 버렸고, 변수 이름으로 생각했다 !! 설명 주셔서 감사합니다, 저를 위해 그것은 답변으로 표시하는 것으로 충분합니다. – Leonardo
반갑습니다. –