2016-08-12 6 views
2

Мое первое приложение работает до сих пор, если для него разрешены службы определения местоположения.CLLocationManager.authorizationStatus выводит код EXC_BAD_ACCESS = 2

Как только я отключу службы определения местоположения для этого приложения, в частности (режим полета, а также обычно отключенные службы определения местоположения работают, как ожидалось).

The Error at runtime

Код следующее:

func locationServices()->Bool{ 
    if CLLocationManager.locationServicesEnabled() { 
     switch(CLLocationManager.authorizationStatus()) { 
     case .NotDetermined, .Restricted, .Denied: 
      return false 
     case .AuthorizedAlways, .AuthorizedWhenInUse: 
      return true 
     } 
    } else { 
     return false 
    } 

} 

Вызывается из viewDidLoad:

override func viewDidLoad() { 
    super.viewDidLoad() 

    txtNotes.delegate = self 
    datePicker.maximumDate = NSDate() 
    if (inc != nil) { 
     let Dateformatter = NSDateFormatter() 
     Dateformatter.dateStyle = NSDateFormatterStyle.MediumStyle 
     navigationItem.title = Dateformatter.stringFromDate((inc?.date)!) 
     datePicker.date = (inc?.date)! 
     txtNotes.text = inc?.notes 
     ratingControl.rating = (inc?.rating)! 
     lblAccuracy.text = inc?.geoloc 
     self.location = inc?.geocor 
    } 
    else { 
     if(locationServices()){ 
     self.locationManager = CLLocationManager() 
     locationManager!.delegate = self 
     locationManager!.requestWhenInUseAuthorization() 
     locationManager!.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager!.startUpdatingLocation() 

     } 
     else{ 
      lblAccuracy.text = "Location Services Disabled" 
      let alertController = UIAlertController(
       title: "Location Services Disabled", 
       message: "Please allow this application to use location services", 
       preferredStyle: .Alert) 

      let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 
      alertController.addAction(cancelAction) 

      let openAction = UIAlertAction(title: "Open Settings", style: .Default) { (action) in 
       if let url = NSURL(string:UIApplicationOpenSettingsURLString) { 
        UIApplication.sharedApplication().openURL(url) 
       } 
      } 
      alertController.addAction(openAction) 
      self.presentViewController(alertController, animated: true, completion: nil) 
      viewDidLoad() 
     } 
    } 
} 
+0

ОК Я идиот, я сделал делегата после доступа к делегату ... – Michael

ответ

0

Доступ к еще не инициализирована делегат не умная мысль ...

Инициализация перед доступом к ней разрешила мою проблему.

Смежные вопросы