본문 바로가기
프로그래밍/iOS

xCode4.2와 그 이전버전에서 iOS버전 분기처리

by 백룡화검 2011. 11. 29.
팁일지는 모르겠지만

xCode4.2와 그 이하버전의 xCode에서 모두 쓰임이 가능한 버전 별 분기입니다.

iOS 5.0 이상에서만 쓰이는 코드를 분기타기 위해서는 아래와 같이 __IPHONE_5_0 이상에서 쓰이도록 해야합니다.
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_5_0

#endif

 물론 이렇게 하면 xCode4.2에서는 제대로 돌아가지만 그 이하의 xCode에서는 __IPHONE_5_0을 찾지 못해서
 BAD_ACCESS가 나곤 합니다.

그래서 아래와 같이 4.3보다 크게 해야지만 정상적으로 됩니다.
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3
#endif
이제 잘 되겠지 하고 4.3 simulator에서 돌리는 순간 해당구문에서 바로 에러가 납니다...ㅠ
그 이유를 살펴보니 simulator는 4.3이지만 빌드한 SDK는 5.0이기 때문에 if문안에 접근해서 에러가 나게 됩니다.

그래서 실제 디바이스의 버전을 체크해 줌으로써
simulator와 Device에서 모두 활용가능하도록 분기 처리를 하였습니다.

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0f)
    {
        //5.0이상   
    }
    else
    {
        //5.0이하
    }
#else
    //5.0 이하
#endif

다 알고 계신분도 있지만 저처럼 아직 서툰사람들에게는 자그마한 팁이 될까 해서 올립니다.

출처 : http://cafe.naver.com/mcbugi/170882