iOS中CoreLocation的代理方法不執行存在多種可能的問題。
第一種:
網上其它關於不執行的文章多是從編程角度出發去解決iOS 8以後定位服務的編寫方法的改變,主要是分爲三個步驟:
1)在Info.plist文件中添加兩行字段:
2)在初始化locationManager的地方首先確定定位服務是否開啓,然後調用requestAlwaysAuthorization方法。
3)在代理方法didChangeAuthorizationStatus方法中確定狀態是否是kCLAuthorizationStatusNotDetermined,如果是則調用requestAlwaysAuthorization方法。
以上三步就能解決從iOS 7系統下定位服務不可用的問題。
然而,很多時候這種方法並沒有卵用。
第二種:
在我編寫完上述代碼後依然解決不了問題,代理方法還是未執行。我在代理方法didFailedWithError中打印了error,發現提示錯誤爲@"the operation could not be completed."錯誤原文大體就是這樣,如果有幾個單詞的不同請忽略這些細節。這個問題一般出現在模擬器中,手機上應該是不會出現這個問題。因此這個問題的解決方法就是重置模擬器。
在模擬器的菜單中選擇Reset content and Settings,然後再執行代碼即可。