2013-07-30 2 views

답변

0

를 사용하여이 작업을 수행하는 클래스 약하게 링크 : 배포 대상보다 이후 인 아이폰 OS의 버전이나 OS의 X에 도입 된 모든 기호를 사용하기 전에

를, 기호를 사용할 수 있는지 확인합니다. 기호를 사용할 수없는 경우 대체 코드 경로를 제공하십시오.

Xcode 프로젝트의 기본 SDK를 iOS 4.0으로 설정한다고 가정합니다. 이렇게하면 해당 버전에서 실행될 때 해당 운영 체제 버전의 기능을 코드에서 사용할 수 있습니다. 또한 OS의 해당 버전에서 새로운 기능을 사용할 수 없더라도 소프트웨어를 iOS 3.1에서 실행하고 싶다고 가정 해보십시오. 배포 대상을 이전 버전의 운영 체제로 설정하면됩니다.

Objective-C에서 instancesRespondToSelector: 메서드는 지정된 메서드 선택기를 사용할 수 있는지 여부를 알려줍니다. 예를 들어, iOS 4.0 버전에서 사용 가능한 첫 번째를 availableCaptureModesForCameraDevice: 방법을 사용하려면 다음과 같은 코드를 사용할 수 있습니다 다음

 
if ([UIImagePickerController instancesRespondToSelector: 
       @selector (availableCaptureModesForCameraDevice:)]) { 
    // Method is available for use. 
    // Your code can check if video capture is available and, 
    // if it is, offer that option. 
} else { 
    // Method is not available. 
    // Alternate code to use only still image capture. 
} 

코드가 아이폰 OS 4.0에서 실행 이상, 그것은 결정 availableCaptureModesForCameraDevice:를 호출 할 수 있습니다 장치에서 비디오 캡처를 사용할 수 있는지 여부. 그러나 iOS 3.1에서 실행될 때는 정지 이미지 캡처 만 사용할 수 있다고 가정해야합니다.

다양한 설정이 코드를 구축한다면, 다음과 같은 결과를 볼 것이다 다음 availableCaptureModesForCameraDevice: 메소드가 정의되어 있지 않기 때문에 이 빌드가 실패 : 당신이 iphoneos3.1의 기본 SDK 설정을 지정하는 경우

그 시스템 버전에서.

당신은 iphoneos4.0의 기본 SDK 설정을 지정한 다음에 전개 대상을 설정 한 경우 :

iphoneos4.0 :이 소프트웨어는 아이폰 OS 4.0에서 실행하는 것 이상 및 이전 시스템에서 실행 실패 .

iphoneos3.1 : 소프트웨어는 iOS 4.0과 iOS 3.1에서 실행되지만 이전 시스템에서는 실행되지 않습니다. iOS 3.1에서 실행될 때 소프트웨어는 대체 코드를 사용하여 이미지를 캡처합니다.

Getter 메서드 이름 (속성 이름과 동일 함)을 instancesRespondToSelector:으로 전달하여 Objective-C 속성의 가용성을 확인하십시오.

약한 링크가있는 C 함수를 사용할 수 있는지 확인하려면 링커에서 사용할 수없는 함수의 주소를 NULL로 설정해야합니다. 주소를 NULL 또는 nil과 비교하여 함수의 주소 및 가용성을 확인합니다.

참조