2011-11-30 3 views
1

기기가 iPhone인지 iPad인지 확인하려면 macro을 사용하고 싶습니다.iPhone : MACRO를 사용하여 기기를 확인하는 방법은 무엇인가요?

#define을 사용하여 값을 부여한 Constant.h 파일이 있습니다.

이제는 #ifdef#endif을 사용하여 기기를 확인하고 싶습니다.

설명 방법은 .m 파일에서만 가능합니다.

그러나 단 하나만 .h 만 있습니다. 그래서 방법 위의

- (BOOL) isPad{ 
    #ifdef UI_USER_INTERFACE_IDIOM 
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); 
    #else 
     return NO; 
    #endif 
} 

나를 위해 유용하지 않다?

이렇게 할 방법이 있습니까? 아니면 다른 방법일까요?

+0

#ifdef UI_USER_INTERFACE_IDIOM은 (는) 더 이상 사전 처리기 정의가 아니기 때문에 Xcode 6.3+에서 깨졌습니다. – k3a

답변

3

컴파일 중에 매크로가 확장되므로 매크로로 확인할 수 없습니다. 따라서 컴파일 할 때 장치 유형을 알아야합니다.

런타임에 두 장치를 모두 지원하려면 장치 유형을 확인하고 적절한 상수 세트를 사용해야합니다.

0
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200 
    UIDevice* thisDevice = [UIDevice currentDevice]; 
    if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) 
    { 
    // etc. 
    } 
#endif 
+0

.h 파일에서는 불가능합니다. – Devang

5

이 질문에 대한 간단한 답변이 있습니다.

#define isiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? YES : NO) 

장치가 iPod 또는 iPhone의 경우 장치가 아이 패드와 0 인 경우이 뜻이 1을 반환합니다.

관련 문제