我应该如何在Swift中使用NSSetUncaughtExceptionHandler

问题描述

更新资料

使用Swift 2,您可以将Swift函数和闭包作为C函数指针传递

原始答案

从Xcode 6 beta 6开始,您不能这样做。

Swift确实支持传递函数指针,但是它们几乎就像不透明指针一样被对待。您既不能定义指向Swift函数的C函数指针,也不能在Swift中调用C函数指针。

这意味着您NSSetUncaughtExceptionHandler()从Swift 调用,但是处理程序必须在Objective- C中实现。您需要这样的头文件:

volatile void exceptionHandler(NSException *exception);
extern NSUncaughtExceptionHandler *exceptionHandlerPtr;

在实现中,您需要这样的东西:

volatile void exceptionHandler(NSException *exception) {
    // Do stuff
}
NSUncaughtExceptionHandler *exceptionHandlerPtr = &exceptionHandler;

将头文件导入Swift桥接头之后,您可以照常设置异常处理程序:

NSSetUncaughtExceptionHandler(exceptionHandlerPtr)

解决方法

在Objective-
C中,我调用该NSSetUncaughtExceptionHandler(&exceptionHandler)方法来记录异常。如何在Swift中调用它?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...