我正在构建一个支持iOS 4.3到iOS 6.x的应用程序。但是,我在不知不觉中使用了标记为 __ OSX_AVAILABLE_STARTING(__ MAC_NA,__ IPHONE_6_0)的方法。这意味着iOS的早期版本中不存在选择器。
当然,当我在iOS 5.x设备上测试我的代码时,应用程序崩溃了。我弄清楚发生了什么,插入了一个 respondsToSelector 检查,默认为“iOS 4.x方式”,当它没有通过检查时做事。
如何在将来防止这些错误?是否有编译时方法弄清楚我正在访问仅支持iOS-6的方法,以便我可以添加适当的iOS功能检查?
我不想意外地在我的iOS6设备上发布可以正常运行的产品,只是让它在某人的iOS4.3设备上失败,因为选择器不存在。
答案 0 :(得分:1)
这里的答案对我有用:https://stackoverflow.com/a/8919108/208989
下载此标题:https://github.com/mattjgalloway/MJGFoundation/blob/master/Source/Utilities/MJGAvailability.h
并将以下内容放在.pch文件的顶部:
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_4_3
#import "MJGAvailability.h"