如何使用NSSetUncaughtExceptionHandler在Swift中的UIView上显示exception消息

我使用Martin R的答案在Swift中打印NSSetUncaughtExceptionHandler。

我应该如何在Swift中使用NSSetUncaughtExceptionHandler

func exceptionHandler(exception : NSException) { let alert = UIAlertController(title: "Exception", message: "\(exception)", preferredStyle: .Alert) self.presentViewController(alert, animated: true, completion: nil) print(exception) print(exception.callStackSymbols) } 

但是我怎样才能显示消息在UIView。 像这个

在这里输入图像说明

因为我得到了一个编译器的错误消息,说“AC函数指针只能由引用'func'或文字闭包形成。

处理 Matt Gallagher在Cocoa with Love编写的未处理的exception和信号 。

在这里输入图像说明

NSSetUncaughtExceptionHandler接受一个C函数指针,C函数体在编译时固定。 C函数指针作为@convention(c)函数types被桥接到Swift 2中,并且和C一样,只能传递一个函数,它的主体可以在编译时被修正; 即顶层的Swift函数,或者不捕获任何variables的匿名函数。

你的匿名函数从封闭范围捕获self ,所以它不能用作C函数。 你应该尝试访问控制器或做任何你需要做的只是使用全局variables或类的其他方式。

使用NSSetUncaughtExceptionHandler

 NSSetUncaughtExceptionHandler { exception in print("EXception Details Are \n\nExceptionName--> \(exception.name) \nReason -->\(exception.reason!)\n\(exception.description)") print(exception.callStackSymbols) }