如何在 SWIFT(不是 Objective C)中设置 CGPDFOperatorTableSetCallback

How do I setup a CGPDFOperatorTableSetCallback in SWIFT (not Objective C)

我正在尝试解析 PDF 文件,我几乎已经让代码正常工作了。我似乎唯一想不通的是将以下 Objective C 代码翻译成 Swift。我需要调用自己编写的函数将其注册为回调。

Objective-C代码是:

CGPDFOperatorTableSetCallback(operatorTable, "q", &op_q);

函数是

static void op_q(CGPDFScannerRef s, void *info) {
    // Do whatever you have to do in here
    // info is whatever you passed to CGPDFScannerCreate
}

Swift 等价物是什么?

如果您不想,则无需创建自己的 op_q 函数来用作函数指针。使用 Swift 的闭包语法:

CGPDFOperatorTableSetCallback(operatorTable, ("q" as NSString).UTF8String) { (s, info) -> Void in
    // ...
}

这里 ("q" as NSString).UTF8String 给你一个 UsafePointer<Int8> 作为一个 const char * 从 C 桥接到 Swift

如果你想使用函数指针,它可能看起来像这样:

func op_q(s: CGPDFScannerRef, _ info: UnsafeMutablePointer<Void>) {
    // ...
}