1

UnsafePointer を作成するには? let mediaBoxPtr = UnsafePointer(mediaBox) を試みましたが失敗しました

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)}
4

1 に答える 1

5

ポインタを作成する必要はありません。変数のアドレスをmediaBox 「inout引数」として渡すだけです&

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

詳細と例については、「C API との対話」を参照してください。

可変ポインタ

関数が引数をとると宣言されているUnsafeMutablePointer<Type> 場合、次のいずれかを受け入れることができます。

  • ...
  • Type変更可能な値のアドレスへのポインターとして渡される、型の変更可能な変数、プロパティ、または添字参照を含む入出力式。
  • ...
于 2016-08-11T13:33:01.980 に答える