2010-06-24 3 views
1

내 iPhone 앱이 OS 3과 4 모두에서 실행될 수 있으므로 iOS 4 SDK 기능을 안전하게 테스트 할 수있는 방법이 필요합니다.프레임 워크에서 사용 가능한 전역 변수를 동적으로 테스트하는 방법은 무엇입니까?

[UIDevice ... systemVersion] 문자열을 확인하는 것을 좋아합니다. 왜 OSX에서 사용 가능한지 쉽게 테스트하기 위해 Apple이 숫자 값을 제공하지 못한 이유가 궁금합니다.

어쨌든.

if ([UIApplication instancesRespondToSelector:... 

그리고 C 방법에 대한

은, 하나는 단순히 함수 포인터는 NULL 여부 검사 :

if (newFunction != NULL) ... 
SDK의 기능을 테스트하는 일반적인 청소 방법은 클래스가 reponds 경우이 같은 셀렉터를 확인하는 것입니다

하지만 내 문제는 전역 변수가 있는지 확인해야한다는 것입니다. 예 : 이 하나 :

extern NSString *const UIApplicationDidEnterBackgroundNotification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); 

어떻게 런타임에 그 존재를 테스트 할 수 있습니까? 테스트 당신의 전역 변수를 사용할 수 shoudl "는 4.x의 존재"전달되면

답변

2

도움말 문서 "SDK 호환성 가이드"에서 추출 : 명시 적으로 주소가 아닌 기호의 노출 된 이름 -을 비교하여

외부 (통근)의 가용성을 확인 상수 또는 알림 이름 NULL 또는 nil. 당신은 키 3.2에서만 사용할 수있는 키보드 알림 사전에 UIKeyboardFrameBeginUserInfoKey 나중에 확인하기를 원한다면 예를 들어

, 당신은 쓸 수 : 장치를 향해 그 힌트

if (&UIKeyboardFrameBeginUserInfoKey) { 
    blah; 
} else { 
    blah; 
} 
1

기본 방법은

UIDevice* device = [UIDevice currentDevice]; 

BOOL backgroundSupported = NO; 

if ([device respondsToSelector:@selector(isMultitaskingSupported)]) 

    backgroundSupported = device.multitaskingSupported; 

입니다.

그런데 OS4가 있으면 멀티 태스킹을 지원합니다. 만프레드

+0

감사합니다. 멀티 태스킹 지원. 나는 그것을 알지 못했다. 제 질문은이 특정 기능에만 국한되지는 않지만 더 일반적인 질문이었습니다. 선언 된 전역을 테스트하는 방법이 있는지 알고 싶습니다. –

관련 문제