首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用MKMapViewDelegate子类方法

未调用MKMapViewDelegate子类方法
EN

Stack Overflow用户
提问于 2017-02-24 02:53:32
回答 1查看 430关注 0票数 1

我有一个符合NSObject, MKMapViewDelegate的子类,并且已经将它赋给了mapView.delegate属性,但是委托方法没有被调用。我如何正确地继承MKMapViewDelegate的子类并将该类设置为委托?

代码语言:javascript
复制
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时,这个方法就会被调用。所以我假设我要么没有正确地进行子类化,要么没有正确实例化子类化的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-24 03:00:27

我认为这是由于弱引用造成的,事实上你没有任何东西持有委托对象,所以一旦该函数离开作用域,它就会被释放。在内部,一个对象应该总是有一个对它的委托的弱引用,以避免保留循环,但如果你想让self以外的对象成为委托,你需要一些具有强引用的东西。

我相信这可以通过在视图控制器中创建一个委托属性来解决,这样就有了对该对象的强引用……

代码语言:javascript
复制
class HomeVC: ViewController {
    let mapViewDelegate = MyMapViewDelegate()
    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42423916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档