У меня есть простой ViewController, который отображает мои текущие координаты местоположения.Ошибка приложения при отклонении диспетчера просмотров
Все работает правильно, но когда я отклоняю ViewController, приложение вылетает без какого-либо конкретного журнала ошибок.
Класс код выглядит следующим образом:
import UIKit
class LocationViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate, UIPopoverPresentationControllerDelegate {
// General objects
@IBOutlet var closeButton: UIButton!
@IBOutlet var latitudeLabel: UILabel!
@IBOutlet var longitudeLabel: UILabel!
@IBOutlet var infoButton: UIButton!
// Global variables
var location: CLLocationManager? = CLLocationManager()
var geocoder = CLGeocoder();
var placemark = CLPlacemark();
var hasPin: Bool = false;
override func viewDidLoad() {
super.viewDidLoad()
// Ask for Authorisation from the User.
location?.requestAlwaysAuthorization();
// For use in foreground
location?.requestWhenInUseAuthorization();
getCurrentLocation();
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func closeButton(_ sender: AnyObject) {
self.dismiss(animated: true, completion: {
print("dismissing locationViewController");
self.location = nil;
});
}
@IBAction func infoButton(_ sender: AnyObject) {
// TODO
}
// MARK: - General functions
func getCurrentLocation() -> Void {
if (CLLocationManager.locationServicesEnabled()) {
location?.delegate = self;
location?.desiredAccuracy = kCLLocationAccuracyBest;
location?.startUpdatingLocation();
}
}
// MARK: - CLLocationManagerDelegate
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("ERROR = \(error)");
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// Gets the user coordinates
let locValue:CLLocationCoordinate2D = manager.location!.coordinate;
USER_LATITUDE = locValue.latitude;
USER_LONGITUDE = locValue.longitude;
longitudeLabel.text = "\(USER_LONGITUDE)";
latitudeLabel.text = "\(USER_LATITUDE)";
location?.stopUpdatingLocation()
}
Кто-нибудь есть ключ, почему это происходит?
Отсутствует журнал ошибок, поэтому меня еще больше смущает.
Сначала я думал, что должен был установить переменную местоположения необязательной, а затем установить ее на нуль, когда я отклоняю VC, но авария все еще происходит.
Crashlytics сообщает, что приложение выходит из строя в строке LocationViewController 0, что на самом деле странно.
Я называю это ViewController, с кнопкой мыши внутри другого VC, как это:
@IBAction func locationButton(_ sender: AnyObject) {
let storyboard = UIStoryboard(name: "Main", bundle: nil);
let viewController = storyboard.instantiateViewController(withIdentifier: "locationVC");
self.present(viewController, animated: true, completion: nil);
}
Я использую Swift3 с последней бета-версии Xcode на прошивкой 10.
- Благодарности
ничего не появляется, только это - ** (lldb) ** в синем цвете; Я также нашел этот журнал в crashlytics - ** 38 libdispatch.dylib 0x1939cc5b8 (Missing) ** –
И он останавливается внутри моего AppDelegate, строка 15, которая является «классом AppDelegate: UIResponder, UIApplicationDelegate {' –
Это не так. Сбой произошел, и затем я создал Crashlytics, чтобы помочь мне узнать журнал сбоев. Это 100% не Crashlytics, гарантировано –