gpt4 book ai didi

ios - 未调用 MKMapViewDelegate 子类方法

转载 作者:行者123 更新时间:2023-11-28 06:24:19 25 4
gpt4 key购买 nike

我有一个符合 NSObject, MKMapViewDelegate 的子类 - 并将其分配给 mapView.delegate 属性,但未调用委托(delegate)方法。我怎样才能正确地将 MKMapViewDelegate 子类化并将该类设置为委托(delegate)?

import UIKit
import MapKit

class HomeVC: ViewController {
@IBOutlet weak var mapView: MKMapView! didSet {
mapView.delegate = MyMapViewDelegate()
}
}

class MyMapViewDelegate: NSObject, MKMapViewDelegate {
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {

print("Not being called")

return renderer
}
}

当我让 HomeVC 符合 MKMapViewDelegate 时 - 该方法将被调用。所以我假设我要么没有正确地子类化,要么没有正确地实例化子类化的对象。

最佳答案

我认为这是由于弱引用和您没有任何东西保留在委托(delegate)对象上的事实造成的,因此一旦该函数离开范围,它就会被释放。在内部,一个对象应该始终对其委托(delegate)有一个弱引用,以避免循环保留,但如果您希望 self 以外的对象成为委托(delegate),您需要一些具有强引用的东西。

我相信这可以通过在您的 View Controller 中创建一个委托(delegate)属性来解决,这样就有对该对象的强引用...

class HomeVC: ViewController {
let mapViewDelegate = MyMapViewDelegate()
...
}

关于ios - 未调用 MKMapViewDelegate 子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42423916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com