如何在 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>) {
// ...
}
我正在尝试解析 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>) {
// ...
}