2016-09-21 107 views
3

我只是更新我的iOS應用程序的代碼,斯威夫特3和這條線鞋面皮我:無不兼容預期的參數類型可選<UnsafeMutableRawPointer>

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

,在以前的版本斯威夫特我的工作用,現在拋出這個錯誤:(!)

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

回答

3

明白了:

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

相關問題