我的新界面需要调用旧的(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
...
答案 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
结果。