如何创建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表达式,作为指向可变值地址的指针传递。…