CGBitmapContextCreate を使用してコンテキストを作成しました。CGContextRelease を使用してリリースする必要がありますか? Objective-C では答えがイエスであることはわかっていますが、Swift ではどうでしょうか?
ありがとう!
CGBitmapContextCreate を使用してコンテキストを作成しました。CGContextRelease を使用してリリースする必要がありますか? Objective-C では答えがイエスであることはわかっていますが、Swift ではどうでしょうか?
ありがとう!
非管理対象として明示的に指定されていない限り、CFType は自動的に管理されます。
ドキュメントによると。
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html
注釈付き API から返される Core Foundation オブジェクトは、Swift で自動的にメモリ管理されます。CFRetain、CFRelease、または CFAutorelease 関数を自分で呼び出す必要はありません。独自の C 関数および Objective-C メソッドから Core Foundation オブジェクトを返す場合は、それらに CF_RETURNS_RETAINED または CF_RETURNS_NOT_RETAINED の注釈を付けます。コンパイラは、これらの API を呼び出す Swift コードをコンパイルするときに、メモリ管理呼び出しを自動的に挿入します。Core Foundation オブジェクトを間接的に返さないアノテーション付き API のみを使用する場合は、このセクションの残りをスキップできます。それ以外の場合は、アンマネージ Core Foundation オブジェクトの操作について学習を続けてください。
注釈が付けられていない API を Swift がインポートする場合、コンパイラは返された Core Foundation オブジェクトを自動的にメモリ管理できません。Swift は、これらの返された Core Foundation オブジェクトを Unmanaged 構造にラップします。
アンマネージ型には型シグネチャがあります
func StringByAddingTwoStrings(CFString!, CFString!) -> Unmanaged<CFString>!
CGBitmapContextCreate型シグネチャを持つ
func CGBitmapContextCreate(...) -> CGContext!
したがって、swift によって自動的に管理されます。
いいえ、電話する必要はありませんCGContextRelease。実際、しようとすると、次のエラーが発生します。
「CGContextRelease」は使用できません: Core Foundation オブジェクトは自動的にメモリ管理されます
CGContextインスタンスは、Swift で自動的にメモリ管理されます。関数のシグネチャから次のことがわかります。
func CGBitmapContextCreate(/* several parameters */) -> CGContext!
自分で解放する必要がある戻り値は次のようになります。
func CGBitmapContextCreate(/* several parameters */) -> Unmanaged<CGContext>!