我试图弄清楚如何消除理事会上的很多警告,我得出的结论是,这些警告是在将叠加层添加到mapKit之后发生的
这是我添加叠加层的部分。
let FireLocation = CLLocationCoordinate2D(latitude: 40.836352, longitude: 14.306019)
let CircularRegion = CLCircularRegion(center: FireLocation, radius: 500, identifier: "fire")
CircularRegion.notifyOnEntry = true
CircularRegion.notifyOnExit = true
self.locatManager.startMonitoring(for: CircularRegion)
let geo = MKCircle(center: FireLocation, radius: CircularRegion.radius)
mapkitView.addOverlay(geo)
之后,我在委托方法上自定义了这些叠加层...
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let circularOverlay = overlay as? MKCircle else {return MKOverlayRenderer()}
let renderer = MKCircleRenderer(overlay: circularOverlay)
renderer.strokeColor = .red
renderer.fillColor = .yellow
renderer.alpha = 0.3
renderer.lineWidth = 2
return renderer
}
我在控制台上收到的警告...
2018-10-25 15:09:04.919237 + 0200 SeeFire [37911:13344200]从主线程访问引擎后,此应用程序正在从后台线程修改自动布局引擎。这会导致引擎损坏和奇怪的崩溃。 2018-10-25 15:09:04.921562 + 0200 SeeFire [37911:13344200]从主线程访问引擎后,此应用程序正在从后台线程修改自动布局引擎。这会导致引擎损坏和奇怪的崩溃。
如果我在添加叠加层的行上添加了注释,则没有警告出现,并且一切正常,这是我做错了吗?
MKCircleRenderer和MKCircleView有什么区别?我怎么知道应该使用哪一个?
预先感谢您的回答。
答案 0 :(得分:0)
尝试以下代码从主线程访问。
DispatchQueue.main.async {
mapkitView.addOverlay(geo)
}