2011-08-10 3 views
2

변수 fullscreenController은 nil이지만 nil도 아닙니다.if-sentence 트리거는 어떻게 할 수 있습니까?

EDIT : 디버거와 콘솔 인쇄 모두 변수가 nil이지만 if 문장이 계속 트리거됨을 나타냅니다.

Code

Console log

+0

나는이 같은 문제를 몇 번이나 경험해 왔지만 화가 났으며 불행히도 그 해결책이 무엇인지 기억하지 못합니다. Xcode/computer/device (장치에있는 경우)를 다시 시작해보십시오. 사실, if 문이 실제로있을 필요는 없습니다. 그것이 nil이면 릴리스를 보내면 반드시 아무런 상처를주지 않습니다. –

+1

앞에 '!'가 없습니까? 사실이 아닙니다. – sidyll

답변

4

는 단일 스레드 응용 프로그램에서 수 없습니다; sloppily-written multithreaded app에서 코드의 해당 부분에 도달 할 때까지는 아무 것도 할 수 없다고 생각합니다. 그러나 나는 이것이 잘린 또는 붙여 넣기 오류이거나 생각하지 않는 예라고 생각합니다.

+0

예, 압니다, 둘 다있을 수는 없습니다. :-) 그러나 나는 가능한 설명을 찾고 있었고, 당신은 하나 또는 두 가지를 생각해 냈습니다. – OMH

0

매우 드물지만, 또 다른 가능한 원인은 약한 참조를 제로입니다. 로컬 스레드가 fullscreenController에 대한 약한 참조 만 보유하고 마지막 강건 참조가 해제되면 모든 weaking 참조가 0이됩니다. if 테스트와 지점 본문 코드 사이에 이런 일이 발생할 수있는 가능성이 있습니다.

자동으로 참조 카운트 된 코드에서 ZWR이 자주 발생하기 때문에 이러한 종류의 문제는 iOS 5 및 Lion에서 더 규칙적으로 보일 것입니다. 적어도 사람들이 ARC 사용 방법을 정확히 이해할 때까지는 그렇습니다.

0

모든 것을 깨끗하게하고 다시 시도하십시오. 소스 코드가 실행 파일과 다른 단계 일 수 있습니다.

또한 릴리스 빌드를 디버깅하지 않으려는지 확인하십시오. 경우에 따라 릴리스 빌드 최적화를 통해 디버거에서 소스 뷰를 혼동하는 경우가 있습니다.

관련 문제