如何检查Objective-C中是否有类或CFType可用

时间:2015-04-24 17:46:20

标签: objective-c ios8 backwards-compatibility touch-id

我现在正在iOS8中工作,我想检查CFType'SecAccessControlRef'是否可用。由于该应用程序将支持iOS 7,而不进行检查,该应用程序将崩溃。对于常规NSClass,我只会使用像

这样的检查
public static string GetValue(RegistryKey key, string value)
{
    string valueStr=(string)key.GetValue(value);
    return string.IsNullOrWhiteSpace(valueStr)?null:valueStr.ToLower();
}

但非NSClass项目有类似的东西吗?

2 个答案:

答案 0 :(得分:4)

您可以测试支持该类型的其中一个函数,而不是测试类型本身。当框架弱链接时,如果框架不存在,C函数的地址将为NULL。例如,您应该可以使用以下内容:

BOOL isSecAccessControlRefAvailable = SecAccessControlCreateWithFlags != NULL;

请参阅Apple的SDK Compatibility Guide中的使用弱链接的方法,函数和符号

答案 1 :(得分:0)

这并不是您想要的,但我已经将其用于类似的问题:

if (&kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly == NULL) {
    return NO; // must be on iOS7
}