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

4

我正在将我的iOS应用程序代码更新为Swift 3,这一行让我困惑:

let dataProvider:CGDataProvider? = CGDataProviderCreateWithData(nil, maskImagePixelData!, maskImagePixelData!.count, nil)

这在我之前使用的Swift版本中可以运行,但现在出现了以下错误:

空值与期望的参数类型“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)

有没有一个简单的替代方案来替换nil,或者我需要转向某种类型的UnsafeMutableRawPointer

1个回答

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)

使用CGDataProvider.init替换CGDataProviderCreateWithData,文档在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接