【发布时间】:2017-09-07 16:40:16
【问题描述】:
iOS 11 最近添加了一个我想使用的新功能,但我仍然需要支持旧版本的 iOS。有没有办法将同一个类编写两次,让新版本的 iOS 使用一个版本的类,而旧版本的 iOS 使用另一个?
(注意:最初我使用if #available(iOS 11, *),但我不得不在很多地方使用它,我认为如果可能的话,拥有两个版本的类会更干净。也许有一种使用@的方法以某种方式可用?我专注于使用@available 而不是预编译器#IFDEF 的东西,因为现在似乎“可用”标签是在 Swift 中执行此操作的首选方式?)
【问题讨论】:
-
如果您在问题中包含一些相关代码会有所帮助。举例说明你正在做什么,并清楚地描述你想做什么。
-
我认为真正的问题是
#available没有对话。例如,如果这是 iOS 11,您可以包含内容,但如果这是 iOS 11,您不能排除内容。 -
您的两个版本的班级成员是否完全相同?
-
它没有相同的成员。其中一个版本的类变量大约是另一个版本的一半。基本上我有一个使用 Reachability 重新进行网络调用的服务器类,iOS 11 引入了一个“waitsForConnectivity”标志,听起来它可能会做很多我所做的事情,所以我不需要那么多变量来跟踪网络的东西。我将尝试找出我可以稍后发布的代码的精简版本。
-
@matt 当然可以。只需在
if块之后包含一个else块。
标签: ios swift availability