App 闪退对于开发人员来说比较头疼,对异常的捕获和定位,以便快速修复Bug 非常考验一个人的功底。对于iOS系统来说通过使用Runtime 和 扩展 来处理异常并友好的提示不让其闪退是不错的选择,但是比较繁琐。好在系统提供了一个 NSSetUncaughtExceptionHandler api 能捕获所有异常。今天主要介绍该函数在Swift 中的使用。先看下效果图:
1、定义异常捕获及处理的相关方法。
本代码参考了 https://github.com/lbwxly/CrashHandler 这篇博客,由于没使用NSSetUncaughtExceptionHandler 所以经测试效果不太令人满意
import Foundation
public typealias Completion = ()->Void;
public typealias CrashCallback = (String,Completion)->Void;
public var crashCallBack: CrashCallback?
func signalHandler(signal:Int32) -> Void {
let stackTrace = Thread.callStackSymbols.joined(separator: "\r\n")
crashCallBack?(stackTrace,{
unregisterSignalHand