如何检查 class 或 CFType 在 Objective-C 中是否可用
How to check if a class or CFType is available in Objective-C
我现在在 iOS8 工作,我想检查 CFType 'SecAccessControlRef' 是否可用。由于该应用程序将支持 iOS 7,如果不进行检查,该应用程序将崩溃。对于常规的 NSClass,我只会使用像
这样的检查
if (NSClassFromString('SomeClass') == NULL)
但是对于非 NSClass 项目是否有类似的东西?
这不是您想要的,但我已将其用于类似类型的问题:
if (&kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly == NULL) {
return NO; // must be on iOS7
}
您可以测试支持该类型的函数之一,而不是测试 类型 本身。当框架是弱链接时,如果框架不存在,C 函数的地址将为 NULL
。例如你应该能够使用类似的东西:
BOOL isSecAccessControlRefAvailable = SecAccessControlCreateWithFlags != NULL;
请参阅 Apple SDK Compatibility Guide 中的使用弱链接方法、函数和符号。
我现在在 iOS8 工作,我想检查 CFType 'SecAccessControlRef' 是否可用。由于该应用程序将支持 iOS 7,如果不进行检查,该应用程序将崩溃。对于常规的 NSClass,我只会使用像
这样的检查if (NSClassFromString('SomeClass') == NULL)
但是对于非 NSClass 项目是否有类似的东西?
这不是您想要的,但我已将其用于类似类型的问题:
if (&kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly == NULL) {
return NO; // must be on iOS7
}
您可以测试支持该类型的函数之一,而不是测试 类型 本身。当框架是弱链接时,如果框架不存在,C 函数的地址将为 NULL
。例如你应该能够使用类似的东西:
BOOL isSecAccessControlRefAvailable = SecAccessControlCreateWithFlags != NULL;
请参阅 Apple SDK Compatibility Guide 中的使用弱链接方法、函数和符号。