2016-03-21 40 views
1

我正在尝试解析PDF文件,而且我几乎得到了代码工作。我似乎无法弄清楚的唯一事情是将下面的Objective C代码翻译成Swift。我需要调用我自己的书面函数来将其注册为回调。如何在SWIFT(而不是目标C)中设置CGPDFOperatorTableSetCallback

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 
} 

会迅当量是什么?

回答

0

如果您不想要,您不需要创建自己的op_q函数以用作函数指针。使用SWIFT的关闭语法:

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

这里("q" as NSString).UTF8String给你一个UsafePointer<Int8>充当const char *从C

桥接斯威夫特如果你想用一个函数指针,它可能是这样的:

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

这是行不通的。 –

+0

@cenkebret你能详细阐述一下什么是不工作?回调是否甚至没有进入关闭?也许提出一个新问题,然后回到这里来提供背景。 – JAL

+0

它正在进入,但信息参数始终为零 –

相关问题