2016-03-31 4 views
1

私はスウィフトに次のコードを持っている:iOSでSwiftでCGDataProviderをリリースするにはどうすればよいですか?

func cropToAlpha(image:CGImage) -> CGImage? { 
    let pixelDataProvider:CGDataProvider? = CGImageGetDataProvider(image) 
    if pixelDataProvider != nil { 
     let pixelData:CFData? = CGDataProviderCopyData(pixelDataProvider!) 

documentation for CGImageGetDataProviderdocumentation for CGDataProviderCopyDataは、両方のあなたは、このオブジェクトを解放する責任がある

を言うの

スウィフトプログラミングガイドはおよそdeinitializationを語りますそれはオブジェクトを解放することと同じではありません。

いくつかのObjective-Cの解答(例えばHow do I release a CGImageRef in iOSを)CFReleaseを呼び出すことをお勧めが、私は

CFRelease(pixelDataProvider) 

ような何かをしようとした場合、私はコンパイルエラー

'CFRelease' 使用できません取得:Core Foundationのオブジェクトを自動的にメモリ管理されます

ドキュメンテーションのCGIm ageGetDataProviderとCGDataProviderCopyDataの結果をSwiftで解放しますか?あなたはそれを解放する必要はありません

答えて

5

(検索結果はスウィフトのリリースに関するページであふれているようN.B.は「スウィフトリリース」のためのWebを検索することは難しいです)。ドキュメントはまだObjective-Cを対象としています。コンパイラのエラーメッセージが正しいです。 Using Swift with Cocoa and Objective-Cから

Core Foundationのオブジェクトは、注釈付きのAPIから返されたが、自動的に管理するメモリですスウィフト - あなたはCFRetainCFRelease、またはCFAutorelease機能を自分で起動する必要はありません。

関連する問題