微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何对重命名的类进行子类化? / 'MKPinAnnotationView' 在 iOS 15.0 中被弃用:重命名为 'MKMarkerAnnotationView'

如何解决如何对重命名的类进行子类化? / 'MKPinAnnotationView' 在 iOS 15.0 中被弃用:重命名为 'MKMarkerAnnotationView'

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 可用,似乎可以让我编译一个类,但显然我无法避免编译 class MyAnnotationView: MKPinAnnotationView { 如果 iOS 15 可用。

那么这在 Swift 中是如何处理的?

解决方法

正如 @Paulw11 在其他答案中所指出的,MKMarkerAnnotationViewiOS 11 以来一直可用。因此无需在 iOS 15 上使用它。


这部分仍然与其他情况相关,例如 @dfdiOS 14 和更早版本中提到的图像选择器。


虽然没有想象中的那么漂亮,但还是值得一试。

import MapKit

#if canImport(CoreLocationUI) // Hack for iOS 15?
public typealias BaseAnnotationView = MKMarkerAnnotationView
#else
public typealias BaseAnnotationView = MKPinAnnotationView
#endif

class MyAnnotationView: BaseAnnotationView {
    
}
,

MKPinAnnotationView 尚未重命名。

MKPinAnnotationView 在 iOS 15 中已弃用,但您仍然可以使用它。弃用只是意味着不建议您将其用于新应用,它可能会在未来消失,您不能指望有任何增强。

MKMarkerAnnotationView 从 iOS 11 开始可用,因此除非您的应用面向 iOS 10 或更早版本,否则您只需切换到使用它而不是 MKPinAnnotationView

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?