SDK的兼容性检测

当我们工程中使用某一方法时,需要确保该方法有效,由于iOS SDK的版本是向上兼容的,高版肯定可以用低版本的SDK,而低版本则不能用高版本的SDK。这是就需要其他有效的方法来代替。

这样就有一个问题,就是如何知道使用的方法在不同版本的系统中是否有效,苹果官方提供了两种类型的判断。详细看官方SDK


一、判断Objective-C方法

例如检测UIImagePickerController类的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.
    }

检测Objective-C属性是否有效可以通过对属性的getter方法名(即属性名)调用上面的方法。



二、判断C 函数

判断函数是否有效只要判断函数的地址是否为NULL。

例如:

if (CGColorCreateGenericCMYK != NULL) {
        CGColorCreateGenericCMYK (0.1,0.5.0.0,1.0,0.1);
    } else {
        // Function is not available.
        // Alternate code to create a color object with earlier technology
    }

注意:检测C函数的有效性,要将它的地址明确的和NULL或者nil比较。不能通过对地址取反判断。

这里C函数的函数名就是该函数的地址,即&myFunction等价于myFunction。


检测外部常量或者通知是否有效需要明确的取地址(&const)与NULL或者nil比较,而不是简单的名称。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值