2016-08-11 10 views
1

UnsafePointerの作成方法は? はmediaBoxPtr = UnsafePointer(メディアボックス)聞かせていますが、ポインタを作成する必要はありません既存のCGRectからUnsafePointer <CGRect>を作成する方法

func PDFImageData(filter: QuartzFilter?) -> NSData? { 
    let pdfData = NSMutableData() 
    let consumer = CGDataConsumerCreateWithCFData(pdfData); 
    var mediaBox = CGRect(x: 0, y: 0, width: bounds.size.width, height: bounds.size.height) 
    let mediaBoxPtr : UnsafePointer<CGRect> = nil //???? I need CGRect(x:0, y:0, bounds.size.width, bounds.size.height) 
    if let pdfContext = CGPDFContextCreate(consumer, mediaBoxPtr, nil) { 
     filter?.applyToContext(pdfContext)} 

答えて

3

を失敗しよう。単に&と "INOUT引数" としてmediaBox 変数のアドレスを渡す:詳細および例については

var mediaBox = CGRect(x: 0, y: 0, width: bounds.size.width, height: bounds.size.height) 
if let pdfContext = CGPDFContextCreate(consumer, &mediaBox, nil) { 
    // ... 
} 

を、"Interacting with C APIs"を参照してください。関数が宣言され

変更可能なポインタ

UnsafeMutablePointer<Type> 引数をとると、次のいずれかを受け入れることができます。

  • ...
  • Typeの可変変数、プロパティ、または添え字参照が含まれ、可変値のアドレスへのポインタとして渡されるインアウト式です。
  • ...(私は以前にこの答えを見つけました)今、それが魅力のように働く、
+0

おかげで、これを試してみましたが、それはコンパイルに失敗しました。重要なのは、letの代わりにvarを使うことです。知っている... –

関連する問題