2016-08-15 3 views
0

이것은 나에게 일어난 가장 이상한 일입니다. 그래서 내가 단위 테스트에서 아래의 코드를 ...이 aStoryboard.instantiateViewControllerWithIdentifier ("myid")는 nld를 반환하지만 lldb에는 nil을 반환하지 않습니다.

let aStoryboard = UIStoryboard(name: "myStoryboard", bundle: nil) 
let viewController = aStoryboard.instantiateViewControllerWithIdentifier("myViewController") as? CustomViewController 

위의 코드는 실행과의 ViewController 괜찮아 그게 모두 식별자가 존재하지 않아야 때문에 파일을 테스트하기 위해 연결되어 있습니다 (일어날 수, 무기 호입니다 목표)하지만 괜찮아.

는 여기에 위의 라인을 통해 브레이크 포인트, 단계를 추가 할 때 다음 lldb

viewController = aStoryboard.instantiateViewControllerWithIdentifier("myViewController") as? CustomViewController 

의 ViewController가 메모리 할당에 다음을 입력, 미친 부분입니다. 어떻게? 수동으로 lldb에 추가하면 메모리가 없으면 메모리가 없으며 단위 테스트에서는 nil이됩니다.

누군가 도와주세요!

+0

UnitTest 타겟의 일부로 CustomController를 추가 했습니까? – Harsh

+0

네, 스토리 보드로 부풀어 올라갔습니다. – harmeet07

답변

0

"viewController는 메모리와 함께 할당됩니다. 어떻게 수동으로 lldb에 추가하면 메모리가 없으면 메모리가없고 단위 테스트를 할 수 없습니다."

스위프트 없음은 Objective-C와 같은 것을 의미하지 않습니다. NULL에 대한 포인터가 아닙니다. 적절한 가치가 없다는 것을 의미합니다. 여기에 대한 자세한 정보 : null/nil in swift language

그럼 질문에 대답 : 괜찮아요 변수에 대한 메모리를 가지고있어.

+0

문제는 그것이 nil이 아니며, 객체가 괜찮을 수 있습니다. 만약 내가 위의 코드를 중단 점없이 실행했다면 viewController는 nil이된다. 하지만 코드를 변경하지 않으면 중단 점이 추가됩니다. 프로그램이 위의 코드를 실행하면 viewController 주변의 이번에는 메모리와 값이 생겼습니다. 이상한 동작입니다. 코드를 변경하지 않았기 때문에 중단 점을 추가하고 디버거를 첨부했습니다. 디버거가 연결될 때 viewController에 값이있는 이유는 무엇입니까? – harmeet07

+0

이 케이스의 스크린 샷을 게시 하시겠습니까? 문제가 무엇인지 명확히하는 데 도움이 될 수 있습니다. – Jurasic

관련 문제