【发布时间】:2021-09-03 22:45:16
【问题描述】:
MKPinAnnotationView 在 iOS 15 中重命名为 MKMarkerAnnotationView。
在 iOS 14 之前,我将 MKPinAnnotationView 子类化为
class MyAnnotationView: MKPinAnnotationView {
// …
}
问题:
如果我的应用程序编译到 iOS 14,我想像上面一样声明MyAnnotationView。
但是,如果它编译到 iOS 15,我必须使用
class MyAnnotationView: MKMarkerAnnotationView {
// …
}
如何做到这一点?
在指令级别,我可以使用类似的东西
if #available(iOS 15, *) {
// iOS 15
} else {
// iOS 14
}
但在班级层面,显然只有类似
@available(iOS 15, *)
class MyAnnotationView: MKMarkerAnnotationView {
如果 iOS 15 可用,似乎可以让我编译一个类,但如果 iOS 15 可用,我显然无法避免编译 class MyAnnotationView: MKPinAnnotationView {。
那么这在 Swift 中是如何处理的呢?
【问题讨论】:
-
赞成。评论是因为我想知道答案。我的问题涉及使用从 iOS14 开始可用的东西 - 我的应用程序需要 iOS 12。我唯一的答案是创建 两个 子类,这可能有助于我使用 更好的东西来解决它 你发现了什么。
标签: ios swift conditional-compilation availability