当某个方法只能在某些iOS版本上使用时,我通常会使用它检查其可用性respondsToSelector:.
有了const CGFloat声明,这是不可能的.
我试图使用的特定常量UIFontWeightBlack定义为:
UIKIT_EXTERN const CGFloat UIFontWeightBlack NS_AVAILABLE_IOS(8_2);
Run Code Online (Sandbox Code Playgroud)
检查我的代码运行的iOS版本是否支持此常量的最佳方法是什么?
另外,如果我想支持使用旧版本的iOS SDK构建我的框架,那么在编译时检查的最佳方法是,使用的SDK是否提供此符号?
我现在要做的检查
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_2
Run Code Online (Sandbox Code Playgroud)
有没有办法直接检查符号,而不必依赖/明确指定iOS SDK版本?
SDK兼容性指南中对此进行了介绍.
通过显式地将其地址(而不是符号的裸名称)与NULL或nil进行比较,检查外部(外部)常量或通知名称的可用性.
所以你的代码是:
if (&UIFontWeightBlack != NULL) {
// It is safe to use the constant
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |