支持旧版本 iOS
Supporting older versions of iOS
我正在开发一个新的 iOS 应用程序,它应该支持开箱即用的新拖放功能 (iOS 11)。但是我希望它也可以在旧的 (iOS 10) 设备上执行。据我了解,将 Deployment Target
设置为 iOS 11 将阻止该应用程序安装在旧设备上。但是,将其设置为 iOS 10.3 会导致出现错误,指出拖放功能仅适用于 iOS 11.0 或更新版本。
我的问题是:有没有一种方法可以通过提供两个版本(一个带有 DnD,一个没有旧版)或告诉 xcode 忽略 DnD 行来使旧设备可以使用该应用程序旧版本?或者这根本不可能?
感谢所有帮助!
将所有委托符合扩展,然后将 @available
属性添加到扩展。例如:
@available(iOS 11.0, *)
extension DragBoardViewController : UIDragInteractionDelegate { ... }
如果您将这些一致性写成扩展,Xcode 9 会自动为您修复以添加 @available
属性。
请记住,您绝对可以在 iOS 10 中定义这些委托方法;他们只是不会被调用。 @available
的要点是防止代码的其他部分在没有先将其包装在 #available
检查中的情况下调用它。
探索这一点的一个好方法是下载 Apple's sample code,然后将部署目标设置为 10.0。您会看到弹出许多修复程序来帮助您完成整个过程,并展示如何在您自己的代码中进行修复。
我正在开发一个新的 iOS 应用程序,它应该支持开箱即用的新拖放功能 (iOS 11)。但是我希望它也可以在旧的 (iOS 10) 设备上执行。据我了解,将 Deployment Target
设置为 iOS 11 将阻止该应用程序安装在旧设备上。但是,将其设置为 iOS 10.3 会导致出现错误,指出拖放功能仅适用于 iOS 11.0 或更新版本。
我的问题是:有没有一种方法可以通过提供两个版本(一个带有 DnD,一个没有旧版)或告诉 xcode 忽略 DnD 行来使旧设备可以使用该应用程序旧版本?或者这根本不可能?
感谢所有帮助!
将所有委托符合扩展,然后将 @available
属性添加到扩展。例如:
@available(iOS 11.0, *)
extension DragBoardViewController : UIDragInteractionDelegate { ... }
如果您将这些一致性写成扩展,Xcode 9 会自动为您修复以添加 @available
属性。
请记住,您绝对可以在 iOS 10 中定义这些委托方法;他们只是不会被调用。 @available
的要点是防止代码的其他部分在没有先将其包装在 #available
检查中的情况下调用它。
探索这一点的一个好方法是下载 Apple's sample code,然后将部署目标设置为 10.0。您会看到弹出许多修复程序来帮助您完成整个过程,并展示如何在您自己的代码中进行修复。