2012-06-18 5 views
3

현재 iOS 디바이스가 app (현재 알고 있어야하는 것은 armv6 또는 armv7 디바이스)을 실행 중인지 알아야합니다. UIUserInterfaceIdiomPad()가 iPhone4S 또는 iPhone3G인지 확인하지 못했습니다. 가능한가?iOS 디바이스를 프로그래밍 방식으로 감지하는 방법

+0

호기심에서 벗어나서 왜 armv6인지 armv7인지 알아야합니까? –

+0

내 프로젝트에 일부 기능을 추가했으며 armv6 장치 (iPhone3G)에서 충돌이 발생합니다. 나도 알아, 그 문제는 프로세서의 아키텍처에 있지만, 아직 그것을 해결하는 방법을 알아낼 수 없습니다. 그래서 모든 기기에서 앱을 실행하려고 할 때 오래된 기기에서이 기능을 끄는 스위치를 만들기로 결정했습니다. – medvedNick

답변

11

다운로드 https://github.com/erica/uidevice-extension (UIDevice - 하드웨어 클래스) 그리고 당신이 사용할 수 있습니다

[UIDevice currentDevice] platformType] // returns UIDevice4GiPhone 
[[UIDevice currentDevice] platformString] // returns @"iPhone 4G" 

을 또는 경우의 망막

+ (BOOL) isRetina 
{ 
    if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
     return [[UIScreen mainScreen] scale] == 2.0 ? YES : NO; 

    return NO; 
} 

를 확인 아니면 경우 iOS 버전

+ (BOOL) isIOS5 
{ 
    NSString *os5 = @"5.0"; 
    NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; 

    // currSysVer = @"5.0.1"; 
    if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedAscending) //lower than 4 
    { 
     return NO; 
    } 
    else if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) //5.0.1 and above 
    {   
     return YES; 
    } 
    else // IOS 5 
    { 
     return YES; 
    } 

    return NO; 
} 
+0

감사합니다! 저와 @Michael Dautermann의 대답은 내가 필요한 것입니다! – medvedNick

+0

흠 당신은 -platformString이 [there] (https://github.com/erica/uidevice-extension/)의 uidevice 카테고리라고 말하지 않았습니다.) – medvedNick

+0

아, 미안 해요. 내 실수 :) –

1

을 확인 arm6 또는 arm7에서 실행 중인지 알고 싶으면 (실행시) "NXGetArchInfoFromCPUType "(much more detail is available in the accepted answer to this question).

그렇지 않으면 매우 빠른 답장을하는 친구 Omar가 제안한대로 platformType 또는 platformString을 사용할 수 있습니다 (+1).

+0

hehe agressive? 나를? 왜? –

+1

내가 공격적이라고 말했습니까? 내가 의미하는 바는 "헛소리 야, 너는 매우 빨리 대답한다". 아마도 또 다른 한달 정도 지나면 포인트에 따라 나를 따라 잡을 것입니다. –

+0

링크를 이용해 주셔서 감사합니다. 그리고 너는 모두 답장에 빠르다. – medvedNick

관련 문제