Для приложения OS X с постоянным состоянием, все равно, чтобы программно определить, был ли последний раз приложение открыто, оно разбилось или неожиданно закрылось? (Таким образом, я могу выполнить некоторые действия, чтобы гарантировать, что приложение находится в согласованном состоянии)Обнаружение сбоя приложения в XCode/swift
ответ
Вы можете использовать NSSetUncaughtExceptionHandler
, как описано here.
NSSetUncaughtExceptionHandler { exception in
print("Exception: \(exception.name)
\(exception.reason!)
\(exception.description)")
print(exception.callStackSymbols)
}
код я использую ...
NSSetUncaughtExceptionHandler {
exception in
ExceptionManager.handle(exception)
}
А класс ExceptionManager включает в себя ...
class ExceptionManager {
class func handle(exception: NSException) {
var exceptions = [ExceptionItem]()
if let items = NSUserDefaults.standardUserDefaults().arrayForKey("UncaughtExceptions") as? [NSData] {
for item in items {
if let exception = NSKeyedUnarchiver.unarchiveObjectWithData(item) as? ExceptionItem {
exceptions.append(exception)
}
}
}
let newItem = ExceptionItem(NSDate(), exception)
exceptions.insert(newItem, atIndex: 0)
if exceptions.count > 5 { // Only keep the last 5 exceptions
exceptions = Array(exceptions[0..<5])
}
var items = [NSData]()
for e in exceptions {
let item = NSKeyedArchiver.archivedDataWithRootObject(e) as NSData
items.append(item)
}
NSUserDefaults.standardUserDefaults().setObject(items, forKey: "UncaughtExceptions")
}
К сожалению, я уже видел этот ответ где-то в другом месте, и это не работает для меня. Получить ошибку: указатель функции c может быть сформирован только из ссылки на func или литеральное закрытие. – user3601148
Можете ли вы опубликовать код, который используете. Я использую эту технику для регистрации сбоев с Swift 2, и это работает для меня. У меня нет точного кода, который я использую со мной, но я могу опубликовать его через пару часов. – Michael
Это просто просто вызов другой функции, которую я написал в классе быстрой работы внутри NSSetUncaughtExceptionHandler. Ваш код работает нормально, но я хочу установить и сохранить значение с помощью другой функции, которая дает мне ошибку, указанную выше. – user3601148
- 1. C# Обнаружение сбоя удаленного приложения
- 2. Обнаружение сбоя приложения магазина Windows
- 3. Обнаружение причины сбоя моего приложения
- 4. Обнаружение сбоя приложения от AspNetCoreModule
- 5. Обнаружение сбоя в коде
- 6. Обнаружение/восстановление сбоя NSConnection
- 7. Алгоритм Bully - обнаружение сбоя
- 8. Обнаружение сбоя chrome.extension.sendRequest
- 9. Управление WebBrowser: обнаружение сбоя навигации
- 10. Обнаружение сбоя сервера с RMI
- 11. Обнаружение сбоя диска perl-скрипт
- 12. Обнаружение сбоя процесса - код C++
- 13. Обнаружение сбоя во время выполнения?
- 14. asp.net обнаружение сбоя дезактивации iOS/Android
- 15. Обнаружение приложения сбой в android
- 16. обнаружение сбоя связи при «помете» в очередь
- 17. Обнаружение сбоя службы обнаружения в Android Bluetooth
- 18. Обнаружение аппаратного сбоя маяка в iOS
- 19. AngularJS: разрешить в RouteProvider - обнаружение успеха/сбоя?
- 20. Фьючерсы в для понимания. Обнаружение сбоя
- 21. C# Причина сбоя приложения
- 22. Причина для сбоя приложения
- 23. Обеспечивает ли асинхронный прием обнаружение сбоя соединения?
- 24. Meteor 1.3 + React: обнаружение сбоя подписки?
- 25. Обнаружение успеха или сбоя AJAX Post
- 26. Windbg - Обнаружение символов, необходимых для дампа сбоя
- 27. Java JEditorPane: обнаружение сбоя подключения к сайту
- 28. Обнаружение сбоя HSQLDB инициализации из-за коррупцию
- 29. Java - Обнаружение сбоя клиента с RMI
- 30. Обнаружение исчерпания памяти в браузере до его сбоя
Возможный дубликат [Detect App аварии на старт] (HTTP: //stackoverflow.com/questions/33844313/detect-app-crash-on-launch) – kelin