2014-06-17 3 views
2

일부 IOS 코드로 작업하는 팀이 있습니다. 한 개발자 (나)는 IOS8 특정 코드 몇 줄로 된 Xcode6-beta를 가지고 있습니다. Xcode5를 사용하는 다른 개발자가 IOS7 용으로 빌드하면 IOS8 SDK가 존재하지 않기 때문에 컴파일이 실패합니다.xcode 5에서 ios8 코드를 무시합니다. 컴파일

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){ 
    // ios8 code 
} else { 
    // ios7 and less way 
} 

은 SDK 또는 엑스 코드 버전을 기반으로 엑스 코드 컴파일에서 iOS8의 코드를 무시하는 방법은 컴파일하도록 있나요?

답변

5

예, 당신이 사용 지침을 수행 할 수 있습니다

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED 
// target is iOS 
    #if __IPHONE_OS_VERSION_MIN_REQUIRED < 80000 
    // target is lower than iOS 8.0 
    #else 
    // target is at least iOS 8.0 
    #endif 
#endif 

이 코드의 불필요한 라인을 주석되지만 자동으로 유사하다. 컴파일러는 if-statement의 8.0 특정 부분에 저장된 모든 것을 포함하지 않습니다.

+1

는 매력처럼 작동합니다 ~ – yuhua

1

link은 훌륭합니다. 어떤 방법 respondsToSelector:

if ([self.<object_name> respondsToSelector:@selector(<method_in_question>)]) { 
    [self.<object_name> <method_in_question>]; 
} 

이 훨씬 더 역동적 인 실제 OS 버전을 확인보다하지만 짧은 객체를 부탁드립니다. 행운을 빕니다!

+0

이것은 런타임 솔루션으로, 제 솔루션은 컴파일 타임에 작업 중입니다. 이 방법에 대한 지원이 없다면 100 %, 런타임에 자원을 확인하고 자원을 낭비해야하는 이유는 무엇입니까? –

+0

1) 내가 가지고있는 시간에 일할 수 없다. 2) 저수준 코드를 다루는 것을 좋아하지 않는다. 3) 1 수표 또는 2 또는 3은 앱의 속도를 늦추지 않고 실제로 문제가 될만한 리소스를 낭비하지 않으며 훨씬 쉽습니다. – craned

+0

본인은 이에 동의하지만 여러 번이 검사를 수행하면 성능이 저하 될 수 있습니다. 나는 묻는 사람이 언급 한 특별한 경우를 고려했고, 프로덕션 버전에서는 버전 종속 코드가 필요 없다는 생각이 들었다. 그래서 저는 이것을 위해 저수준 솔루션을 선택했습니다. 그러나 귀하의 솔루션은 다중 버전 지원에 더 적합합니다. –

관련 문제