2

我正在尝试解析 PDF 文件,并且几乎可以使代码正常工作。我似乎无法弄清楚的唯一一件事是将以下目标 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 的等价物是什么?

4

1 回答 1

1

如果您不想,您不需要创建自己的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>) {
    // ...
}
于 2016-03-21T18:50:08.800 回答