2012-07-02 3 views
1

특정 방법으로 좁힐 때까지 앱에서 임의의 충돌이 발생했습니다. 그 방법에서 나는 NSString을 매개 변수로 기대한다. 이 NSString은 nil 일 수 있으며,이 경우 메소드가 종료되고 아무런 해를 끼치 지 않습니다. 내가 NSLog(@"%@", myString)을 통해 내 방식의 매개 변수를 실행하면(null)과 <null>의 차이점은 무엇입니까?

가 나는 이들 중 하나 얻을 것을 발견 : 실제는 NSString의

  1. 내용
  2. (널)
  3. < 널 >

첫 번째 두 가지는 내 방식으로 예상되고 처리됩니다. 세 번째로, <null>은 내 애플리케이션을 -[NSNull length]: unrecognized selector sent to instance 0x1b2ace8과 충돌시킵니다.

나는 nil 또는 isKindOfClass를 확인하여 문제를 해결하는 방법을 발견했다,하지만 내 문제는 (널)과 < 널 >의 차이점은 무엇입니까 입니까?.

+0

[nil, NULL 및 \ [NSNULL nil \] 사이의 차이점은 무엇입니까?] (http://stackoverflow.com/questions/6814427/what-are-the-differences-between-nil-null -and-nsnull-nil) – duskwuff

+1

@duskwuff : 질문이나 대답 모두 두 개의 설명 문자열'(null)'및 ''을 처리하지 않습니다. –

+0

두 값이 어떻게 문자열 화되는지에 대한 메모를 포함하도록 허용 된 대답을 편집했습니다. :) – duskwuff

답변

5

(null)nil 값의 형식 지정자 %@을 사용할 때 NSLog()이 인쇄하는 문자열입니다. <null>descriptionNSNull (사용자가 [NSNull null]을 통해 액세스하는) 단일 사용자에게 전송 한 결과입니다. 그들이 nil를 포함 할 수 없기 때문에

NSNull

코코아 컬렉션에 "아니오 오브젝트"자리 ( NSArrayNSDictionary)로 사용된다.

두 설명 문자열은 혼동을 일으킬 정도로 유사하며, NSNull에 버그를 제기해야한다고 주장 할 수 있습니다.

+0

아, 알겠습니다. 그 문제를 해결해 주셔서 감사합니다! 내 응용 프로그램에서 그 NSNull의 기원을 사냥해야합니다. 내 삶을 위해서 지난 몇 시간 동안 아무런 노력을하지 않았습니다. – Julian

+1

JSON 구문 분석은이 문제를 일으키는 가장 일반적인 작업 인 것 같습니다. 누락 된 데이터가있는 코코아 컬렉션을 만들려면 NSNull을 사용해야합니다. –

+0

그리고 당신은 한 번 더 맞습니다. 내가 원격 JSON 개체에서 오는 사전 안에 범인을 발견했습니다. 감사! – Julian

관련 문제