在Cell中使用MKMapView时内存泄漏

时间:2014-08-20 15:36:06

标签: ios swift mkmapview

我想在SideView中使用MKMapView。 SideView包含一些Cell,我加载MapView如下:(这是我的自定义UITableViewCell类)

override init(style: UITableViewCellStyle, reuseIdentifier: String) {
    super.init(style: style, reuseIdentifier: "AddressCell")

    var addressMap = MKMapView(frame: CGRectMake(0,50,250,150))

    var latitude:CLLocationDegrees = 48.399193
    var longitude:CLLocationDegrees = 9.993341
    var latDelta:CLLocationDegrees = 0.01
    var longDelta:CLLocationDegrees = 0.01

    var theSpan:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
    var churchLocation:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)

    var theRegion: MKCoordinateRegion = MKCoordinateRegionMake(churchLocation, theSpan)

    addressMap.setRegion(theRegion, animated: true)

    self.contentView.addSubview(addressMap)

这里的问题是,地图中的内存永远不会被释放。如何在UITableViewCell中使用地图而不会出现内存问题?

1 个答案:

答案 0 :(得分:2)

好的,所以如果您仍在寻找解决方案,我发现在离开mapView时(或在重新加载MapKit视图的任何事件之前)调用removeFromSuperview()会释放内存。只需添加

override func viewDidDisappear(animated: Bool) {
    myMap.removeFromSuperview()
}

到我的MapKit View的View Controller就足以为我解决这个问题了。希望你已经找到了这个(或另一个)解决方案,但我想我无论如何都会发布它,以防它节省了一些时间。

在此示例中,

myMap是我的MapKit视图的插座。