我使用Martin R的答案在Swift中打印NSSetUncaughtExceptionHandler。
How should I use NSSetUncaughtExceptionHandler in Swift
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中显示消息。喜欢这个
因为我收到编译器错误消息说"一个C函数指针只能通过对一个' func'的引用来形成。或字面上的封闭。"
Handling unhandled exceptions and signals由Matt Gallagher在Cocoa with Love撰写。
答案 0 :(得分:0)
NSSetUncaughtExceptionHandler
采用C函数指针,C函数体在编译时固定。 C函数指针作为@convention(c)
函数类型被桥接到Swift 2中,并且像在C中一样,只能传递一个函数,该函数的主体可以在编译时修复;即顶级Swift函数,或不捕获任何变量的匿名函数。
您的匿名函数从封闭范围捕获self
,因此它不能用作C函数。您应该尝试访问控制器,或者仅使用全局变量或类以其他方式执行您需要执行的操作。
答案 1 :(得分:-1)
使用NSSetUncaughtExceptionHandler
NSSetUncaughtExceptionHandler { exception in
print("EXception Details Are \n\nExceptionName--> \(exception.name) \nReason -->\(exception.reason!)\n\(exception.description)")
print(exception.callStackSymbols)
}