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

标签 swift3

我只是将我的 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/

相关文章:

ios - 我的用户默认设置不保存我的 slider 值 - Swift 3

ios - 禁用用户交互的 UITableViewCell 和 UITextField 不调用 didSelectRow

ios - 以一定角度将文本绘制到图像上 [Swift 3]

uikit - CGRectMake、CGPointMake、CGSizeMake、CGRectZero、CGPointZero 在 Swift 中不可用

swift - 在 Swift 3 中计算范围计数

iOS CollectionView header 不显示

ios - 从 swift 3 中的标签栏移动时如何重新加载页面?

ios - 使用 GPUImagePicture 和自定义 LUT 进行 GPUImageVideoCamera 实时预览

Swift3,如何在字典中添加 AnyObject?

ios - 如何从 Collection View 中删除单元格?