我只是将我的 iOS 应用程序的代码更新为 Swift 3,这行代码让我很困惑:
let dataProvider:CGDataProvider? = CGDataProviderCreateWithData(nil, maskImagePixelData!, maskImagePixelData!.count, nil)
这在我使用的先前版本的 Swift 中有效,现在它抛出此错误:
Nil is not compatible with expected argument type 'CGDataProviderReleaseDataCallback' (aka '@convention(c) (Optional<UnsafeMutableRawPointer>, UnsafeRawPointer, Int) -> {}')
我找不到
CGDataProviderCreateWithData
的文档(!) 但签名也让我感到困惑:CG_EXTERN CGDataProviderRef __nullable CGDataProviderCreateWithData(
void * __nullable info, const void * cg_nullable data, size_t size,
CGDataProviderReleaseDataCallback cg_nullable releaseData)
nil
是否有简单的替代品?还是我需要搬进某种UnsafeMutableRawPointer
?
最佳答案
知道了:
let releaseMaskImagePixelData: CGDataProviderReleaseDataCallback = { (info: UnsafeMutableRawPointer?, data: UnsafeRawPointer, size: Int) -> () in
// https://developer.apple.com/reference/coregraphics/cgdataproviderreleasedatacallback
// N.B. 'CGDataProviderRelease' is unavailable: Core Foundation objects are automatically memory managed
return
}
var dataProvider:CGDataProvider? = CGDataProvider(dataInfo: nil, data: maskImagePixelData!, size: maskImagePixelData!.count, releaseData: releaseMaskImagePixelData)
并与
CGDataProvider.init
更换 CGDataProviderCreateWithData
文档是 here
关于swift3 - Nil 与预期的参数类型 Optional<UnsafeMutableRawPointer> 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39611700/