在Objective- C中,我调用该NSSetUncaughtExceptionHandler(&exceptionHandler)方法来记录异常。如何在Swift中调用它?
NSSetUncaughtExceptionHandler(&exceptionHandler)
使用Swift 2,您可以将Swift函数和闭包作为C函数指针传递
从Xcode 6 beta 6开始,您不能这样做。
Swift确实支持传递函数指针,但是它们几乎就像不透明指针一样被对待。您既不能定义指向Swift函数的C函数指针,也不能在Swift中调用C函数指针。
这意味着您NSSetUncaughtExceptionHandler()从Swift 调用,但是处理程序必须在Objective- C中实现。您需要这样的头文件:
NSSetUncaughtExceptionHandler()
volatile void exceptionHandler(NSException *exception); extern NSUncaughtExceptionHandler *exceptionHandlerPtr;
在实现中,您需要这样的东西:
volatile void exceptionHandler(NSException *exception) { // Do stuff } NSUncaughtExceptionHandler *exceptionHandlerPtr = &exceptionHandler;
将头文件导入Swift桥接头之后,您可以照常设置异常处理程序:
NSSetUncaughtExceptionHandler(exceptionHandlerPtr)