2010-12-14 5 views
2

오픈 소스 json 파서를 사용하고 있지만 컴파일시 역 참조 경고가 표시됩니다.잠재적 Null 역 참조

MyProject/Classes/SBJSON.m : 403 : 13 잠정적 인 null 참조입니다. '만들기 및 NSError 객체를 반환'에 코딩 표준에 따라 매개 변수 '오류'가 오류에 역 참조를 보여줍니다 여기

- (BOOL)scanValue:(NSObject **)o error:(NSError **)error 
{ 
skipWhitespace(c); 

switch (*c++) { 
    case '{': 
     return [self scanRestOfDictionary:(NSMutableDictionary **)o error:error]; 
     break; 
    case '[': 
     return [self scanRestOfArray:(NSMutableArray **)o error:error]; 
     break; 
    case '"': 
     return [self scanRestOfString:(NSMutableString **)o error:error]; 
     break; 
    case 'f': 
     return [self scanRestOfFalse:(NSNumber **)o error:error]; 
     break; 
    case 't': 
     return [self scanRestOfTrue:(NSNumber **)o error:error]; 
     break; 
    case 'n': 
     return [self scanRestOfNull:(NSNull **)o error:error]; 
     break; 
    case '-': 
    case '0'...'9': 
     c--; // cannot verify number correctly without the first character 
     return [self scanNumber:(NSNumber **)o error:error]; 
     break; 
    case '+': 
     *error = err(EPARSENUM, @"Leading + disallowed in number"); 
     return NO; 
     break; 
    case 0x0: 
     *error = err(EEOF, @"Unexpected end of string"); 
     return NO; 
     break; 
    default: 
     *error = err(EPARSE, @"Unrecognised leading character"); 
     return NO; 
     break; 
} 

NSAssert(0, @"Should never get here"); 
return NO; 
} 

null의 경우도있다.

+1

가 쉽게 될 것 ... – Eiko

+0

난 그냥 내 질문에 편집 : A부터 R eported work-around는 할당 주위에 문이 경우 배치하는 것입니다. – Ksinak

답변

5

오류 매개 변수가 NULL 일 수 있다고 불평합니다 (호출자가 NULL을 전달하기로 선택한 경우). 그런 다음 명세서는

*error = err(EPARSENUM, @"Leading + disallowed in number"); 

이 충돌합니다. 코드와

if(error){ 
    *error = err(EPARSENUM, @"Leading + disallowed in number"); 
} 
+0

감사합니다 마틴, 내 응용 프로그램에서 잠재적 인 null 역 참조 문제를 해결합니다. – Ksinak