代码

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时,请求对话框突然消失,就像是闪烁一样,为什么会这样?

最佳答案

对于代码B,您的CLLocationManager实例保存在局部变量中。一旦viewDidLoad退出,它将被释放,因为没有对实例的强引用。这将导致对话框消失。

在您的第一个代码块中,对象属性将保留一个强引用,直到对象本身被释放。

关于ios - requestalwaysauthorisation()突然消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54158815/

10-09 12:28