如何创建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)}

最佳答案

您不必创建指针。只需传递mediaBox的地址
变量为“inout argument”,带有&

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的下标引用的in-out表达式,作为指向可变值地址的指针传递。

10-08 03:48