2009-12-08 4 views
2

를 사용하여 아이폰 OS 버전을 감지하는 방법은 내 응용 프로그램에 아이폰 OS 버전을 감지하고 싶습니다. 나는 탐지 코드를 사용해 보았지만 매크로를 사용할 것을 권고 받았다. 누군가 경험하고, 샘플 코드를 게시하고, 사용할 라이브러리를 제공 할 수 있습니까?매크로

답변

6

어떤 매크로를 사용 하시겠습니까? 나는 항상 미래와 이전 버전과 compatiable 될 수 있도록 버전 번호를 찾을 수있는 표준 방법은 @ 같은있는 NSString로 제공

NSString* versionNumber = [[UIDevice currentDevice] systemVersion] 

를 사용하는 "2.0"이었다 또는 생각 @ "2.2. 1 "

NSFoundationVersionNumber과 함께 사용되는 Foundation 클래스의 버전을 설명하는 버전 상수가 있지만 이전 및 향후 코드에서 이것이 얼마나 신뢰할 수 있는지 확실하지 않습니다. Availability.h에서

+0

답하기 : P 덧붙이 기 위해 가장 많이 언급하는 매크로는 프리 프로세서 매크로 (#define)입니다. 이것은 작동하는 방식이 아니지만 사람들이 버전이 그런 방식으로 정의 될 것이라고 가정 할 수있는 방법을 알 수 있습니다. – Jay

+1

전 처리기 매크로를 사용하면 대상으로하는 iPhone OS 버전을 기반으로 조건부 컴파일을 수행 할 수 있지만 응용 프로그램이 실행되는 iPhone OS 버전은 감지하지 못합니다. 예를 들면 다음과 같습니다. #if __IPHONE_OS_VERSION_MIN_REQUIRED> = __IPHONE_2_0 –

5

봐, 특히 문 :

#define __IPHONE_2_0  20000 
#define __IPHONE_2_1  20100 
#define __IPHONE_2_2  20200 
#define __IPHONE_3_0  30000 
#define __IPHONE_NA  99999 

그리고 거대한 헤더 주석을 읽는 것을 잊지 말자. 전처리 기 매크로는 os 버전으로 코드를 구분하는 가장 안전한 방법입니다.

+0

저는 이것이 iPhone 앱용 라이브러리 작성 용이지만 앱 자체 용 라이브러리는 아닙니다. 그러나 그것은 아마 마이크가 암시하는 것입니다. 그러나 이것은 컴파일을위한 것이지 런타임 버전 검색을위한 것이 아닙니다. –

+0

예 - 컴파일시에만 사용됩니다. – CajunLuke

+0

이 방법은 트위터 또는 클라우드 서비스 용 코드를 사용하는 경우 매우 유용합니다. 개발자는 Mac OS와 iPhone 모두를위한 자체 "라이브러리"를 만듭니다. 사용자 인터페이스와 관련하여이 makros가 실제로 도움이됩니다. 고마워요! – JackPearse