在使用Xcode 4.5和iOS 6 SDK时,是否可以针对较旧的iOS版本?

在使用Xcode 4.5和iOS 6 SDK时,是否可以针对较旧的iOS版本?,xcode,ios5,ios6,xcode4.5,deprecated,Xcode,Ios5,Ios6,Xcode4.5,Deprecated,可以使用IOS 6新方法并在IOS 5上部署。 我应该采取什么方法? 请指导。使用弱链接类执行此操作: 在使用iOS或OS X版本中引入的、比部署目标晚的任何符号之前,请检查该符号是否可用。如果符号不可用,请提供备用代码路径 假设您将Xcode项目中的基本SDK设置为iOS 4.0。这允许您的代码在该版本的操作系统中运行时使用该版本的功能。还假设您希望您的软件在iOS 3.1中运行,即使它不能使用该版本操作系统中较新的功能。通过将部署目标设置为操作系统的早期版本来允许此操作 在Objective

可以使用IOS 6新方法并在IOS 5上部署。 我应该采取什么方法?
请指导。

使用弱链接类执行此操作:

在使用iOS或OS X版本中引入的、比部署目标晚的任何符号之前,请检查该符号是否可用。如果符号不可用,请提供备用代码路径

假设您将Xcode项目中的基本SDK设置为iOS 4.0。这允许您的代码在该版本的操作系统中运行时使用该版本的功能。还假设您希望您的软件在iOS 3.1中运行,即使它不能使用该版本操作系统中较新的功能。通过将部署目标设置为操作系统的早期版本来允许此操作

在Objective-C中,
实例响应选择器:
方法告诉您给定的方法选择器是否可用。例如,要使用iOS 4.0中首次提供的
availableCaptureModesForCameraDevice:
方法,可以使用如下代码:

如果([UIImagePickerController实例响应选择器: @选择器(可用于便携式设备的便携式模式:)]){ //方法可供使用。 //您的代码可以检查视频捕获是否可用, //如果是,请提供该选项。 }否则{ //方法不可用。 //仅使用静止图像捕获的备用代码。 } 当您的代码在iOS 4.0或更高版本中运行时,它可以调用
availableCaptureModesForCameraDevice:
,以确定设备上是否有视频捕获。但是,当它在iOS 3.1中运行时,它必须假设只有静态图像捕获可用

如果要使用各种设置构建此代码,将看到以下结果:

如果指定iphoneos3.1的基本SDK设置: 生成将失败,因为该系统版本中未定义
availableCaptureModesForCameraDevice:
方法

如果指定iphoneos4.0的基本SDK设置,然后将部署目标设置为:

iphoneos4.0:该软件只能在iOS 4.0或更高版本中运行,无法在早期系统上启动

iphoneos3.1:该软件将在iOS 4.0和iOS 3.1中运行,但无法在早期系统上启动。在iOS 3.1中运行时,软件将使用备用代码捕获图像

通过将getter方法名(与属性名相同)传递给
实例响应选择器:
,检查Objective-C属性的可用性

要确定弱链接的C函数是否可用,请使用链接器将不可用函数的地址设置为NULL这一事实。通过将地址与NULL或nil进行比较,检查函数的地址,从而检查其可用性

参考资料

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. }