2010-11-24 14 views
1

これは、新しい4.2.1ファームウェアを使用してiPadでテストしたところ、iOS 4.2の最終SDKを使用して起きたばかりですが、前回私は自分のデバイス上でテストしたので、非常に可能性が高いとは思うが、4.2.1に関連して100%確かめることはできない。以前は4.2 beta3と4.2 beta3 SDKで問題なくテストしていました。UIViewの[self setNeedsDisplay]を呼び出すたびにクラッシュする

いくつかのQuartz 2D図面を表示するビューがあります。図面を更新するために[self setNeedsDisplay]を呼び出すたびに、アプリケーションは信号0でクラッシュします。これまでにこれまでに問題があったことはありませんし、常にその呼び出しを使用してビューを再描画しました。

これまで誰かがこの問題に遭遇したことがありますか、原因が何であるかについての情報がありますか? drawRect:が呼び出される前にクラッシュが発生しているので、これをデバッグする方法がわかりません。

実際のデバイスでのみ、シミュレータでクラッシュすることはありません。誰もが信号として0エラーがあまりにも多くのメモリを使用して、それが問題だということを示唆する前に、また

Program received signal: “0”. 
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib") 

ログは、デバイスとデバッガで表示され、正確なエラーで生成されませんクラッシュはこれです多くの場合、クラッシュが発生したとき(アプライアンスで表示)、アプリは1.4 MBのRAMしか使用していないため、クラッシュする前に大きな割り当てや何かが見られません。使用された1.4Mbをちょっと超えるとクラッシュします。


アップデート:私はこれ以上に取り組んできました、ここで私がこれまでに見つけたものです。

  1. 4.2の最終SDKとiOS 4.2.1に問題があるようですが、この特定の問題には関係していないようです。私は以前に私のために働いていた、と私は私のクラスでdrawRect:メソッドをオーバーライドしていないと私はsetNeedsDisplayがある呼び出すことはクラッシュしない場合、それはまだ同じよう
  2. をクラッシュさ4.2ベータ3に格下げしました
  3. drawRect:を無効にしても(ちょうど[super drawRect:]を呼び出しても、それを完全に空にしても)、クラッシュします。

何らかの理由で、drawRect:を実装するだけでこの問題が発生しています。私はこのプロジェクトを開始して以来このコードを実装していて、今はこの問題を経験しているだけなので、意味がありません。


更新:それは私が図面をやっているビューのサイズに関連するすべての後にメモリの問題であることが判明インスツルメンツツールはいくつかの理由で表示されていないと思われるが。 、この投稿によると:iPhone + UIView. Enormous memory consumption during drawRect. Any strategies for reducing this?使用時setNeedsDisplay:大きなビューには大きなメモリスパイクがあり、それを修正する唯一の実際の方法は、より小さなタイル表示を使用し、それぞれ別々に描画することです。

私はスクロールビューから画像の束を削除し、クラッシュなしでメモリの警告を見ることができました。スクロールビューで図面ビューのサイズを小さくすると、メモリエラーが発生しなくなりました。私は以前4000x4000に近い描画ビューを持っていました。それを3000x2000に下げ、クラッシュすることはありません。

今私の問題は、私が描画しているものの性質上、1つの連続した描画ビューが必要なことです。描画することができないかどうかはわかりません。しかしそれは別の投稿の問題です。

+0

クラッシュで何が起こっているのかを投稿してください。あなたはクラッシュ報告を受け取り、それは私たちがあなたを助けるのを助けるでしょう。 – jer

+0

どこでsetNeedsDisplayを呼び出しますか? – Vladimir

+0

あなたはバックグラウンドスレッドで 'setNeedsDisplay'を呼び出すことがありますか? –

答えて

2

お試しくださいOther Answer/Solution 基本的にメモリに問題がある可能性があります。

+0

私は私の質問で言ったように、通常はメモリの問題ですが、この場合はそうではありません。アプリケーションはクラッシュ時に1.4 MBのRAMをすべて使用していますが、4.2ベータ3でも正常に動作しました。 4.2.1にアップデートしたので、私の別のアプリで奇妙なシンボルの問題が発生しました(クラッシュすると、デバッグが表示されず、欠落しているファイルについて不平を言います)。 –

+0

実際にはあなたがまっすぐになっているように見えますが、インストゥルメントツールは何らかの理由で表示されていないように見えますが、実際にはXcodeを再インストールしても何の違いもありません。この投稿によると:http://stackoverflow.com/questi ons/1864218 setNeedsDisplayを使用している場合:大きなビューにはメモリスパイクがあります。私はスクロールビューからたくさんの画像を削除し、クラッシュなしでメモリの警告を見ることができました。スクロールビューで図面ビューのサイズを小さくすると、メモリエラーが発生しなくなりました。私は前に4000x4000に近い見方をしていました。それを3000x2000に下げ、クラッシュすることはありません。 –

+1

ニース。あなたはそれを修正することができてうれしい。ドキュメンテーションで1024x1024を超えるものは推奨されません(UIView Class Referenceの一番上の注)。私はあなたがなぜそれを見つけたのかと思います。 –

関連する問題