Nil 与预期的参数类型 Optional<UnsafeMutableRawPointer> 不兼容

dum*_*dad 4 swift3

我只是将我的 iOS 应用程序的代码更新为 Swift 3,这行代码让我很困惑:

let dataProvider:CGDataProvider? = CGDataProviderCreateWithData(nil, maskImagePixelData!, maskImagePixelData!.count, nil)
Run Code Online (Sandbox Code Playgroud)

这在我使用的先前版本的 Swift 中有效,现在它抛出此错误:

Nil 与预期的参数类型 'CGDataProviderReleaseDataCallback' 不兼容(又名 '@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)
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的替代品,nil或者我是否需要进入某种UnsafeMutableRawPointer

dum*_*dad 5

知道了:

    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)
Run Code Online (Sandbox Code Playgroud)

CGDataProvider.init替换CGDataProviderCreateWithData文档是here