有人能解释我应该如何在Swift中为getVersion使用CGPDFDocument的方法吗?苹果的文档显示:
func getVersion(majorVersion: UnsafeMutablePointer<Int32>,
minorVersion: UnsafeMutablePointer<Int32>)返回时,majorVersion和minorVersion参数的值分别设置为文档的主版本号和次要版本号。
因此,我提供两个变量作为函数的参数,它们在退出时会被值填充?在调用该方法之前,它们是否需要指出一些特定的内容?如果返回的值就是整数,为什么不直接将它们输入整数呢?
发布于 2017-04-17 09:04:12
你就这样用它:
var major: Int32 = 0
var minor: Int32 = 0
document.getVersion(majorVersion: &major, minorVersion: &minor)
print("Version: \(major).\(minor)")函数需要指针,但是如果使用Int32运算符传入普通的&变量,Swift编译器就足够聪明地使用指向变量的指针调用函数。这在使用Swift与Cocoa和Objective:与C API交互中有记录。
函数像这样工作的主要原因可能是它是一个非常古老的C函数,已经导入到Swift中。C不支持将元组作为返回值;使用指针作为输入参数是函数返回多个值的一种方法。可以说,为返回类型定义一个自定义结构是一个更好的设计,这样函数就可以在一个类型中返回两个值,但是这个函数的原始开发人员显然并不认为它是必要的--也许是不知情的,因为这种模式在C中非常常见。
https://stackoverflow.com/questions/43448243
复制相似问题