【发布时间】:2016-12-18 07:16:57
【问题描述】:
在我的代码中,我在班级中创建了一个 CLLocationManager 属性。 我想使用闭包来初始化位置管理器,因为我可以在那里设置委托,而且我认为在它们的声明中配置属性非常棒(就像我在 Objective C 中对属性 getter 所做的那样)。
所以我尝试了这个:
class MapViewController: UIViewController {
var locationManager: CLLocationManager = {
var lm = CLLocationManager()
lm.delegate = self
return lm
}()
extension MapViewController: CLLocationManagerDelegate {
}
但我在 lm.delegate = self 行上收到以下错误。
/Users/.../MapViewController.swift:18:23:无法分配 要键入的“NSObject -> () -> MapViewController”类型的值 'CLLocationManagerDelegate?'
MapViewController 符合委托(因为下面的扩展),所以我不认为“非确认”是问题。
我知道,我可以在 viewDidLoad 上初始化委托,但如果可以在属性本身上进行初始化,我真的很想学习这样做,因为它感觉很整洁。
谢谢!
【问题讨论】:
标签: ios swift closures core-location