2009-06-03 12 views
1

本当に変です。私は-touchesEnded:、-touchesMoved、および-touchesBegan:メソッドを実装する空のUIImageViewサブクラスを持っています。これらのメソッドの実装は空です。彼らはただ何もしません。しかし、 "Leaks"でInstrumentsを実行しても、UIImageViewに触れ、画面に触れている間にUIImageViewの外に指を動かすと、InstrumentsからMemory Leak警告が表示されます。私はUIImageViewに触れるとこの奇妙なメモリリークを取得するのはなぜですか?

私のデモアプリケーションでは、そのときにオブジェクトの割り当てが行われていません。メソッドは空です。私がインストゥルメンツで読んだことはすべてFoundationとRun Loopに関係しています。私は自分のクラスを2回チェックしてオブジェクトの割り当てを取り除いた。それはイメージを表示するだけのスケルトンですが、そのイメージに触れたり、画面上で指を動かすとそのイメージは変更されません。それは意味をなさない。

他に誰かがこのような問題に遭遇しましたか?

アップデート:私はもう少し詳しく調べて、5本の指ですばやくタップすると画面上の任意の場所でメモリリークが起こることを知りました。 Instruments.appから得られるものは、実行ループとイベントループに関するものです。デバイスがタッチを十分に速く処理できず、割り振られたオブジェクトを解放してある時点で固まってしまうような場合です。同じ問題がある場合は、試してみてください。

更新日:私はいくつかのAppleのサンプルアプリケーションもテストしました。通常のユーザーのように3〜5本の指で画面をハックすると、Instrumentはイベントに関するメモリリークを表示し、ループを実行します。間違いなくフレームワークや計測器には大きなものがあります。 iPhone OS 2.2.1でテスト済み。

答えて

2

アップルのフォーラムで読んでいるので、それはSDKの未解決の問題です。これは、加速度計デリゲートがゼロでない場合に発生します。タッチイベントオブジェクトは割り当てられますが、解放されることはありません。加速度計デリゲートが呼び出される速度が速いほど、割り当ての失敗が早くなります。リンゴのサンプルコードの多くは、同じ問題を示しています。私は加速度計をオンにしました。

しかし、タッチがあるビューから別のビューにトラッキングされたときにこのようなリークが発生することもありました。私が同じビューに触れ続けて、そのビューを離れることなく指を動かすと、私はその問題を解決しません。

解決策:加速度センサーをオフにして(デリゲートをnilに設定)、アプリ内のビュー数を減らします。彼らがiPhone OS 3.0でこの問題を修正したかどうかはわかりません。

残念ながら、これは助けにはなりません。で

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [[UIAccelerometer sharedAccelerometer] setDelegate:nil]; // because of framework bug 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [[UIAccelerometer sharedAccelerometer] setDelegate:self]; // because of framework bug 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    [[UIAccelerometer sharedAccelerometer] setDelegate:self]; // because of framework bug 
} 

さらに詳しい情報:http://discussions.apple.com/thread.jspa?messageID=9396584t

+0

は、加速度計はまだ3.0で地獄のよう漏れています。ありがとう。 – SpaceDog

+0

こんにちは、私は非常に迅速に何回も連続して画面をタップすると、同じ問題があります。 Leaksでは、メモリ割り当てが約16MB増加していることがわかります。 しかし、ゲームをするように普通にタップすると、割り当てのメモリが増加しません。 SDKの問題は解決しましたか?ありがとうございました。 –

関連する問題