如何在 SWIFT(不是 Objective C)中设置 CGPDFOperatorTableSetCallback [关闭]
Posted
技术标签:
【中文标题】如何在 SWIFT(不是 Objective C)中设置 CGPDFOperatorTableSetCallback [关闭]【英文标题】:How do I setup a CGPDFOperatorTableSetCallback in SWIFT (not Objective C) [closed] 【发布时间】:2016-03-21 17:50:02 【问题描述】:我正在尝试解析 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 的等价物是什么?
【问题讨论】:
【参考方案1】:如果您不想,您不需要创建自己的 op_q
函数来用作函数指针。使用 Swift 的闭包语法:
CGPDFOperatorTableSetCallback(operatorTable, ("q" as NSString).UTF8String) (s, info) -> Void in
// ...
这里("q" as NSString).UTF8String
为您提供UsafePointer<Int8>
,它充当从C 桥接到Swift 的const char *
。
如果你想使用函数指针,它可能看起来像这样:
func op_q(s: CGPDFScannerRef, _ info: UnsafeMutablePointer<Void>)
// ...
【讨论】:
这不起作用。 @cenkebret 你能详细说明什么不起作用吗?回调甚至没有进入闭包吗?也许提出一个新问题并返回此处以提供上下文。 它正在进入,但信息参数始终为零 @cenkebret 您使用的是哪种语法? Swift 闭包还是函数指针?您能提出一个新问题并发布您的完整代码吗? 我已经发布了这个问题:***.com/questions/36358521/…以上是关于如何在 SWIFT(不是 Objective C)中设置 CGPDFOperatorTableSetCallback [关闭]的主要内容,如果未能解决你的问题,请参考以下文章