2010-05-27 5 views
1

저는 GHUnit에서 프레임 워크를 작성하고 단위 테스트를 작성해 왔습니다. 내 Framework의 접근 자 메서드 중 하나가 NSInteger를 반환합니다. CLI와 GUI 간의 NSInteger 차이점은 무엇입니까?

나는이 같은 테스트에서 예상되는 가치를 주장 :

GHAssertEquals(1320, request.port, @"Port number should be 1320"); 

이 주장은으로 전달하는 AppKit의 UI 기반의 프론트 엔드 내 테스트를 실행.

그러나 하드 코드 된 1320을 (NSInteger)으로 입력 캐스트하지 않으면 명령 줄에서 테스트를 실행할 때 형식이 일치하지 않습니다. 정수가 컴파일러에 의해 해석되는 방식의 차이를 일으키는 원인은 무엇입니까? xcodebuild는 하드 코드 된 정수에 대해 다른 데이터 유형을 사용하는 명령 줄에 있습니까?

답변

2

다른 아키텍처 용으로 응용 프로그램을 작성하고 있습니까? (아마도 하나는 유니버설로, 하나는 하나의 아키텍처로 구성되기 때문일 수 있습니다)? NSInteger는 대상 아키텍처 (src)에 따라 32 비트 또는 64 비트로 빌드되며 컴파일러에서 작은 상수를 선택하는 것과 다를 수 있습니다. 캐스트는 분명히 당신의 의도를 분명히합니다.

+1

컴파일러는 1320과 같은 상수에 대해 'int'를 선택합니다. 이것은 10 진 상수이며 접미사가없고 'int'의 최소 지정된 범위 내에 들어갑니다. – dreamlax

+0

네 말이 맞아! Xcode에서 유니버설 바이너리를 작성하고있었습니다. 어떤 경우 든 데이터 유형에 대해 명시 적으로 표현하면 내 테스트가 덜 취약하기 때문에 좋은 결과를 얻었습니다. :) – d11wtq

관련 문제