代码A
let locobject = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locobject.delegate = self
locobject.requestWhenInUseAuthorization()
locobject.startUpdatingLocation()
}
代码B
override func viewDidLoad() {
super.viewDidLoad()
let locobject = CLLocationManager()
locobject.delegate = self
locobject.requestWhenInUseAuthorization()
locobject.startUpdatingLocation()
}
代码A正常运行,但是当我尝试运行代码B时,请求对话框突然像闪光一样消失了,为什么会这样?
答案 0 :(得分:2)
对于代码B,您的CLLocationManager
实例保存在局部变量中。 viewDidLoad
退出后将立即释放,因为没有对实例的强引用。这将导致对话框消失。
在您的第一个代码块中,对象属性将保留一个强引用,直到对象本身被释放。