2017-04-17 7 views
1

SwiftのCGPDFDocumentに 'getVersion'メソッドを使用する方法を誰もが説明できますか? Appleのドキュメントを提供します:Swiftの構文:CGPDFDocument.getVersionのUnsafeMutablePointers

func getVersion(majorVersion: UnsafeMutablePointer<Int32>, 
    minorVersion: UnsafeMutablePointer<Int32>) 

を「リターンで、MAJORVERSIONとMINORVERSIONパラメータの値は、それぞれの文書のメジャーおよびマイナーバージョン番号に設定されています。」

私は関数の引数として2つの変数を指定し、終了時に値を入力しますか?メソッドが呼び出される前に、特に何かを指す必要がありますか?返される値が何であるのかを整数として入力するだけではいかがですか?

答えて

1

あなたはこのようにそれを使用します。

var major: Int32 = 0 
var minor: Int32 = 0 
document.getVersion(majorVersion: &major, minorVersion: &minor) 
print("Version: \(major).\(minor)") 

関数はポインタを期待していますが、&オペレータと平野Int32変数に渡すと、スウィフトコンパイラは変数へのポインタと関数を呼び出すのに十分なスマートです。これはUsing Swift with Cocoa and Objective-C: Interacting with C APIsに記載されています。

このように機能する主な理由は、それがSwiftにインポートされた非常に古いC関数だからでしょう。 Cは戻り値としてタプルをサポートしていません。イン・アウト・パラメーターとしてポインターを使用することは、関数に複数の値を戻す方法です。おそらく、関数が2つの値を単一の型で返すことができるように、戻り型のカスタム構造体を定義する方が良い設計でしたが、この関数の元の開発者は明らかにそれが必要ではないと思っていましたなぜなら、このパターンはCで非常に一般的であるからです。

関連する問題