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

时间:2015-10-05 15:47:46

标签: ios swift exception uiview

我使用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中显示消息。喜欢这个

enter image description here

因为我收到编译器错误消息说"一个C函数指针只能通过对一个' func'的引用来形成。或字面上的封闭。"

Handling unhandled exceptions and signals由Matt Gallagher在Cocoa with Love撰写。

enter image description here

2 个答案:

答案 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)
        }