2013-04-14 6 views
-5

NullNSString으로 설정되면 어떻게됩니까? NSUserDefaults에 저장 되셨습니까 ?? 그것을 할당 해제 된 인스턴스처럼 취급하기 때문에 충돌이 발생합니까 ??Null이 NSString으로 설정된 경우 어떻게됩니까 ??

+6

시도해 보셨습니까? –

+0

'NULL' 또는'[NSNull null]'을 의미합니까? – Abizern

+0

그래, 내가 가져 오는 오전 sqlite DB를 가지고, 그것을 밖으로 인쇄 할 때 Null을 반환하고, 나중에 그것을 보여줍니다 userdefault에서 가져온 후 - [CFString respondsToSelector :] : 메시지가 deallocated 인스턴스 – raghul

답변

0

은유를 혼합합니다. 먼저, 검색을 저장하기 전에 (NSStringFromClass [obj class]) 객체 유형을보고하는 일부 NSLog 메시지를 뿌리십시오. C 기반 SQLite 인터페이스 또는 Core Data를 SQLite 백업 저장소와 함께 사용하는 경우 명확하지 않습니다. 따라서 질문을 업데이트하십시오.

마지막으로 클래스 B 만 응답하는 메시지로 클래스 A의 객체에 메시지를 보내는 경우 해당 오류를 가리키는 예외가 발생합니다. 할당 취소 된 오류는 완전히 다르며 메모리 관리에 결함이 있음을 나타냅니다. 후자의 오류를 추적하려면 좀비를 활성화하고 모든 메시지를 중단 시키십시오 (많은 Q &).

1

"Null로 NSString 포인터를 설정할 때 무슨 일이 일어나는가"하는 말은 "Null"(표준 Objective-C 용어가 아님)의 의미에 조금 의존합니다.

"Null"은 "Nil"("null"및 "NULL"의 C 별칭이 있음)을 의미하거나 NSNull 객체를 의미 할 수 있습니다.

"nil"은 "널 포인터"입니다 - 모두 0입니다. 이것은 포인터가 어떤 객체도 참조하지 않는다는 것을 의미합니다. "NSNull"은 이것을 나타내는 실제 객체가 있더라도 "아무것도"표시하지 않는 유일한 ("싱글 톤") 인스턴스가있는 객체 클래스입니다.

NSString 포인터 (예 : NSString *가 선언 된 항목)를 nil로 쉽게 설정할 수 있습니다. ("nil"주위에 따옴표가 없습니다!) 그러면 포인터가 "비어있게"됩니다.

캐스트를 사용하여 일반적으로 수행되지는 않지만 NSString 포인터를 NSNull 개체를 가리 키도록 설정할 수도 있습니다.

(그리고, 물론, 당신은 "빈 문자열"에있는 NSString 포인터를 설정할 수 있습니다 -.. @""이 제로 길이의 실제 문자열, 정말 전무/null로 관련이 없습니다)

메서드가 선언 될 때 "local"변수 (메서드 내에서 선언 된 변수)가 컴파일러에 의해 암묵적으로 제로화되지 않으므로 메서드 입력시 선언 된 포인터를 nil로 명시 적으로 설정하는 것이 좋습니다. 따라서 결국 얻을 수없는 경우 설정되었지만 참조되지는 않습니다. 신비한 오류를 생성 할 수있는 "쓰레기"는 포함하지 않습니다.

관련 문제