即使用戶退出視圖並返回到上一個視圖,我仍嘗試進行位置更新。 爲了做到這一點,我創建了一個獨立的類來處理我的位置更新,但我遇到了奇怪的行爲。位置更新無法正常工作
首先,我的授權請求只是彈出一瞬間,然後消失,所以我將其移回實際視圖。 但是,我的位置更新仍然無法正常工作。 位置圖標出現在設備上,但它永遠不會進入didLocationUpdate功能。它也沒有輸入didFailWithError。 我很新的iOS,所以我不知道我做錯了什麼。
這裏是我的類:
import CoreLocation
class RouteLocation: NSObject, CLLocationManagerDelegate{
var locationManager:CLLocationManager!
var databasePath = ""
override init(){
super.init()
let dirPaths =
NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)
let docsDir = dirPaths[0] as NSString
databasePath = docsDir.stringByAppendingPathComponent(
"\\firstAscent.db")
// For use in foreground
locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()
// locationManager.requestAlwaysAuthorization()
// print("in location")
if CLLocationManager.locationServicesEnabled() {
print("System Services enabled")
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = 10
self.locationManager.startUpdatingLocation()
}
}
var isLocationMising = true
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let locValue:CLLocationCoordinate2D = manager.location!.coordinate
let latitute = locValue.latitude
let longitute = locValue.longitude
print("locations = \(locValue.latitude) \(locValue.longitude)") //continues to make SQL query calls
我把它從視圖中使用:_ = RouteLocation()
http://stackoverflow.com/a/38961606/6297658 – Dravidian
我忘了提及這個確切的代碼工作時,它是視圖類的一部分。 – Xitcod13
你不會在你分配'RouteLocation'實例的地方顯示代碼,但是從你的描述中,你聽起來像是在一個局部變量中分配它。只要該函數退出,局部變量就會釋放,這意味着您的CLLocationManager實例被釋放。您應該將您的'RouteLocation'對象分配爲您的AppDelegate的屬性,或者將其設置爲一個單獨的對象,以使其生命週期更長 – Paulw11