Cra*_*igH 2 cllocationmanager cllocation ios swift
我是iOS新手.我有一个应用程序,允许用户在不同的视图控制器中更新其位置.我试图最小化执行此操作的代码量,因此我将所有与位置相关的方法放在一个单独的类中,而不是复制方法来实现这一点.
import UIKit
import CoreLocation
class LocationUtil: NSObject, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
func findUserLocation()->Void{
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
Run Code Online (Sandbox Code Playgroud)
从我的视图控制器我这样称呼这个类.
override func viewDidLoad() {
super.viewDidLoad()
let locUtil = LocationUtil()
locUtil.findUserLocation()
}
Run Code Online (Sandbox Code Playgroud)
但是,没有任何委托方法被调用.当我在视图控制器中直接使用相同的代码时,它工作正常.我究竟做错了什么?
问题是,locUtil您为其分配了LocationUtil实例,它是一个自动变量 - 也就是说,它是viewDidLoad函数的本地变量.因此,当viewDidLoad运行时,locUtil(和你的LocationUtil实例)成立,存在一条线,并在一阵烟雾中消失.因此,您的LocationUtil实例将再次被销毁 - 将其实例变量(例如位置管理器)与其一起使用.
因此,没有时间发生任何事情.位置管理员及其代表的存在时间约为百万分之一秒.这不足以找出你的位置!
| 归档时间: |
|
| 查看次数: |
1889 次 |
| 最近记录: |