단순히 버전만을 체크할 경우
#define __IPHONE_2_0 20000#define __IPHONE_2_1 20100#define __IPHONE_2_2 20200#define __IPHONE_3_0 30000
와 같은 매크로를 사용하면 됩니다. (Availability.h에 선언되어 있습니다)
즉 다음과 같이..
#ifdef __IPHONE_3_0
// 3.0일 때 처리
#endif
하면 되죠.
그런데 "현재 버전"의 "이상", 즉 "2.2 이상에서만"이라는 조건은 여러개의 항목들을 전부 조합하여 사용할 수도 있지만, 다음과 같은 방법을 이용하여 판단할 수 있습니다
#if defined(__IPHONE_3_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_0)
__IPHONE_OS_VERSION_MIN_REQUIRED는 현재 버전에서 지원되는 최소 버전이며, __IPHONE_OS_VERSION_MAX_ALLOWED는 현재 버전에서 지원되는 최대 버전입니다.
따라서 __IPHONE_OS_VERSION_MAX_ALLOWED를 이용하면 "현재 버전에서 지원되는 최대 버전" 이하/이상 등의 조건을 사용할 수 있습니다.
이 때 주의할 점은, 2.0의 경우 __IPHONE_3_0이라는 매크로가 정의 되어 있지 않기 때문에 defined()를 이용하여 정의 되어 있는지 먼저 검사하여야 정확한 버전 비교가 됩니다.
Posted by 장현준


AccessDenied Style.terminal
