私はmono/iPhoneを初めて使い、UIScrollViewに配置された各ページのUIViewを使用してPDFドキュメントを表示するアプリケーションを開発しています。次のページにスクロールするたびに、新しいページ+/- 1だけがメモリに保持され、残りはフラッシュされます(UIViewではなくPDFページ)。多くのUIViewでメモリが不足していますが、モノクロでCGContextを解放することはできませんか?
しかし、デバイス上でデバッグすると、十分なページを反転させた後にアプリケーションがクラッシュし、アプリケーション出力にメモリ警告が表示されることがあります。
これは、UIViewでレンダリングされたビットマップがメモリからパージされていないと仮定しているため、Objective CでCGContextRelease()メソッドが見つかりましたが、これはMonoTouchにはありません。私が見つけることができる唯一の類似したメソッドはUIGraphicsクラスでしたが、現在のグラフィックスコンテキスト(それは確かに既存のものに設定することはできません)に関係するものだけを扱います。
UIViewでグラフィックスコンテキストをリリースするにはどうすればよいですか?これはまったく可能ですか?私の選択肢は何ですか?誰でも役立つことを願ってCGContext
インスタンスは、解放された手動(Dispose
が呼び出されたとき)、またはガベージコレクタ(GC)がファイナライザを実行するときにされたときに、これは非常識な私を回します。..
私はページあたり1つの「UIView」を持っていました。キャッシュされたグラフィックスを削除して、これらのビューをすべて引き継ぐことができました。しかし、 'CGContext.Dispose()'や手作業によるガベージコレクションはまったく機能しませんでした。私は自分自身を叩いてしまいました.3つの 'UIView'を使っています。すべてがスムーズに機能します。 – Arne
あなたが作成していたページ数/ UIViewを知らなくても辛いですが、それがあなたの主な記憶問題だったと思います。いずれにせよ、それらを再利用することは(あなたが他のアプリとデバイスを共有しているので)すばらしいことです。あなたはそれが働いてうれしい:-) – poupou