&#39;&安培;&#39;用于类型&#39; AutoreleasingUnsafeMutablePointer <uiimage?>&#39;的非inout参数

时间:2016-02-22 19:45:22

标签: ios objective-c swift pointers uiimage

我的新界面需要调用旧的(Objective-C)渲染功能。首先我尝试了这个:

func renderImage(image:UIImage) {
    var imageCopy = UIImage(CGImage: image.CGImage!)
    Renderer.imageWithSourceImg(&imageCopy, ...)
}

我收到了错误:

'&' used with non-inout argument of type 'AutoreleasingUnsafeMutablePointer<UIImage?>'

我已经阅读了如何使用指针调用函数,您需要var绑定而不是let,这就是我猜到imageCopy的原因事情。

基本上我有一个不可变的图像作为参数传入,我需要调用一个将可变图像指针作为参数的函数。怎么样?

更新:Objective-c界面:

+(UIImage *)imageWithSourceImg:(UIImage **)_sourceImgPtr
    ...

1 个答案:

答案 0 :(得分:0)

为渲染器假设以下Objective-C API:

+(UIImage *)imageWithSourceImg:(UIImage **)_sourceImgPtr;

Swift中生成的界面是:

class func imageWithSourceImg(
    _sourceImgPtr: AutoreleasingUnsafeMutablePointer<UIImage?>
) -> UIImage!

您需要认真对待<UIImage?>通用说明符。那么,这对我来说很好:

var im : UIImage? = UIImage() // note the type
let im2 = Renderer.imageWithSourceImg(&im)

结果im2将被输入UIImage!,这意味着您可能应该在尝试使用nil之前检查display结果。