CGImageRefで適切なメモリ管理を行っているのか不思議です。私はいくつかのメソッドを渡しています(CGオブジェクトなので、自動解放をサポートしていないと思います)。非NSObjectを使用したメモリ管理や他のNSObjectとのやりとりは、私にとってまだまだ新しいものです。私がやっているここでCGImage(CGImageRef)を解放する
:
私はCGBitmapContextCreateImageと私のイメージ・キャッシュ・マネージャ(数1を保持)内CGImageRefを作成し、NSMutableDictionary(カウント2を保持)にそれを追加しています。
CALayersがイメージを使用する場合、レイヤーを削除する前にlayer.contents(保持数+1)を割り当て、layer.contents = nil(保持回数-1)で内容を消去します。
は最後に、テクスチャをクリアするとき、私は0
として、カウントを保持するために持っているCGImageRefReleaseと[NSMutableDictionary REMOVEOBJECT]を呼び出すこれは、そうするための適切な方法ですか?あなたが記述
リンクをありがとう、偉大なリソースは、多くを明確にします。 文書では、imageがNULLの場合はCGImageReleaseでエラーが発生しないので、より安全に聞こえます。 removeObject:forKey :,はい、その1つです。 – Rudi
**あなたがリンクしている文書はあなたのクレームをサポートしていません**いくつかのCore FoundationオブジェクトはCocoaクラスに対して "フリーダイヤル"のブリッジですが、すべてがそうであるとは限りません。 'CFStringRef'を' NSString * 'にキャストすることもできますが、' CGImageRef'と 'UIImage'を使って行うことはできません。 – benzado
私の主張は、CFオブジェクトが 'release'と' autorelease'をサポートしているということです。このドキュメントでは明示的にこう述べています: "メモリ管理関数とメソッドも互換性があることに注意してください.Core Foundationオブジェクトで' CFRelease'を使用し、Cocoaオブジェクトで 'release'と' autorelease'を使用することができます。 CGImageのリファレンスによると、CGImageはCFTypeに由来しています:http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CGImage/ –