1

如何创建 UnsafePointer?尝试让 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 回答