首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift语法: UnsafeMutablePointers in CGPDFDocument.getVersion

Swift语法: UnsafeMutablePointers in CGPDFDocument.getVersion
EN

Stack Overflow用户
提问于 2017-04-17 08:54:20
回答 1查看 92关注 0票数 1

有人能解释我应该如何在Swift中为getVersion使用CGPDFDocument的方法吗?苹果的文档显示:

代码语言:javascript
复制
func getVersion(majorVersion: UnsafeMutablePointer<Int32>, 
   minorVersion: UnsafeMutablePointer<Int32>)

返回时,majorVersion和minorVersion参数的值分别设置为文档的主版本号和次要版本号。

因此,我提供两个变量作为函数的参数,它们在退出时会被值填充?在调用该方法之前,它们是否需要指出一些特定的内容?如果返回的值就是整数,为什么不直接将它们输入整数呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-17 09:04:12

你就这样用它:

代码语言:javascript
复制
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中非常常见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43448243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档