Я только что получил свой первый отчет о сбоях Crashlytics и пытаюсь исправить проблему. К сожалению, это только строки кода, который работает на старых устройствах, так что я не могу проверить это на моем iPhone 6.Понимание iOS Crash [SIGABRT ABORT]
В докладе аварии из Crashlytics выделяет две темы, первая гласит:
Fatal Exception: NSInvalidArgumentException
-[CABasicAnimation altitude]: unrecognized selector sent to instance 0x17734440
в то время как вторая гласит:
Crashed: Map Update :: NSOperation 0x1a839470
SIGABRT ABORT at 0x316a3dfc
указанная строка кода для обеих нитей:
let relativeAlt = mylocation.altitude - appDelegate.elevation
Где:
let mylocation = self.mapView.myLocation
let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
Я пытаюсь понять, что я читаю в отчете об аварии. Как я вижу, программа не понимает ссылку altitude
по какой-то причине? Это не имеет смысла для меня, поскольку этот сбой, кажется, происходит после того, как это приложение работает в течение нескольких минут без ошибок, выделенная строка кода запускается, возможно, сотни раз до того, как приложение разбилось. Что на самом деле происходит здесь?
Дополнительная информация:
Поскольку письма, я получил дополнительные аварии, которые я считаю проистекают из того же вопроса:
Crashed: Map Update :: NSOperation 0x19fb2d50
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x11d077ca
Crashed: Map Update :: NSOperation 0x145ced50
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x81450a64
Первый выделенному следующую строку в своем коде (я считаю, так как я работал на приложение с этого бета-версии и номера строк немного изменились):
self.lastLocation = (self.mapView.myLocation as CLLocation).coordinate
Хотя второй аварии просто дал мне:
libobjc.A.dylib
objc_msgSend + 5
Первый из новых аварий (Это обеспечило строку коды) при условии, этот отчета:
Thread : Crashed: Map Update :: NSOperation 0x19fb2d50
0 libobjc.A.dylib 0x3105c708 objc_release + 7
1 FlightTracker 0x000ba830 FlightTracker.MapViewController. (locationManager (FlightTracker.MapViewController) -> (Swift.ImplicitlyUnwrappedOptional<ObjectiveC.CLLocationManager>, didUpdateLocations : Swift.ImplicitlyUnwrappedOptional<Swift.Array<Swift.AnyObject>>) ->()).(closure #1) (MapViewController.swift:168)
2 Foundation 0x244ce0fd __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 8
3 Foundation 0x24438fc5 -[NSBlockOperation main] + 148
4 Foundation 0x2442b845 -[__NSOperationInternal _start:] + 768
5 Foundation 0x244d0a57 __NSOQSchedule_f + 186
6 libdispatch.dylib 0x315ad5d9 _dispatch_queue_drain$VARIANT$mp + 948
7 libdispatch.dylib 0x315ad0a9 _dispatch_queue_invoke$VARIANT$mp + 84
8 libdispatch.dylib 0x315af0d3 _dispatch_root_queue_drain + 330
9 libdispatch.dylib 0x315b01fb _dispatch_worker_thread3 + 106
10 libsystem_pthread.dylib 0x31720e25 _pthread_wqthread + 668
Исключение говорит о том, что вы вызывали 'высоту' на объект' CABasicAnimation', который он не поддерживает. Это указывает на то, что вы, вероятно, вызывают метод на выпущенном объекте, и эта память теперь повторно используется для 'CABasicAnimation'. Откуда появляется свойство myLocation? Вашего вида карты? Он не является свойством 'MKMapView' – Paulw11
' myLocation' является свойством формы 'CLLocation! ', Унаследованной от API iOS Google Maps. Если объект был выпущен, это может иметь смысл, учитывая, что устройство имело только 14 МБ ОЗУ, доступное, когда устройство разбилось. – user3185748
@ user3185748 Вы объявили 'let mylocation' локально внутри того же метода, что и' let relativeAlt = mylocation.altitude - appDelegate.elevation'? –