2016-02-22 43 views
0

的非inout參數一起使用我的新界面需要調用舊的(Objective-C)呈現函數。首先,我想這:'&'與類型爲'AutoreleasingUnsafeMutablePointer <UIImage?>'

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

而且我得到一個錯誤:

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

我讀過有關如何調用一個函數的指針,你需要有一個var結合,而不是這就是我爲什麼猜測imageCopy的事情。

基本上我有一個作爲參數傳入的不可變圖像,我需要調用一個將可變圖像指針作爲參數的函數。怎麼樣?

UPDATE:Objective-C的接口:

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

請注意,我也嘗試創建一個全新的無關圖像。我也無法做到這一點。 –

+0

請顯示Objective-C API。如果我們不知道Objective-C如何聲明函數,那麼不能告訴你如何調用Objective-C函數。 – matt

+1

嘗試使變量'imageCopy'具有類型'UIImage?'。 – Mrwerdo

回答

0

假定以下Objective-C的API,用於渲染:

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

在夫特所生成的接口是:

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

您需要認真對待通用說明符<UIImage?>。那麼,這對我來說編譯罰款:

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

結果,im2,將分型爲UIImage!,這意味着你應該檢查是否有nil結果您嘗試使用它之前。

相關問題