0

少し使用すると、アプリ全体が非常に応答しなくなることに気づきました。私は機器を開いて、主にメモリとCPU使用率についていくつかのテストを行うことにしました。私のアプリをTwitterアプリと比較しましたUITableView。これは、私のアプリと同じように、tableViewの画像と画像の両方を使用しているためです。私は楽器にまったく慣れていないので、iPhoneがどのように機能するかについての私の非常に基本的な理解を使用して、すべてが何を示しているかを理解する必要がありました。

両方のアプリが驚くほど似ていたので、私のメモリ使用量は問題ないようです。たくさん使用した後の私のアプリは、この段階では非常に遅れています:実メモリー:55.63、仮想:152.03。Twitter:リアル:58.42、バーチャル:192.89。Twitterアプリは、より多くのメモリを使用しているにもかかわらず、それでも本当に応答性が高かった(私は超応答性とは言えないが、それでもいくつかのジャンプの瞬間があった)。これを閉じた状態で、CPUに移りました。

今、これはそれが奇妙になるところです。Twitterアプリは非常に少量のCPUを使用します(私のアプリよりも少し集中的ですが)。何も起こらない場合、CPU使用率は約0%に低下します。それは数回跳ね上がりました、そしてこれはアプリが少し遅れたときと一致しました。しかし、私のアプリは巨大なCPUを大量に消費します!何も起こらないとき、私のアプリは使用済みCPUの100%、つまり約80%-100%を使用します。つまり、Activity Monitor Instrumentのバーを読み取るとき、UITableViewがアイドル状態のときにシステム負荷が減少していません。これは、Twitterアプリが行っていたことです。

したがって、これがアプリが応答しなくなったり遅れたりする理由であると判断しました。問題は、これを改善する方法がわからないことです。

これは私が考えることができるものです:
-私は非同期ネットワーク要求の全負荷を行います。ただし、これは、要求が通常1秒以内に実行され、JSONがダウンロードされてすぐに解析されるため、CPU使用率が上昇したままになる理由を説明していません。
-個々のネットワーク要求がすべて完了した後、TableViewをリロードします。ただし、上記のように、これは最後のJSONのダウンロードと同時に完了するため、CPU使用率が急上昇する理由はありません。
-セル構成で大量の計算が行われました。ただし、前の2つと同じように、あまり説明していません。

高負荷に切り替えてもUIViewController高負荷が残ります。はUIViewController開始ビューコントローラーであり、アプリが最初に起動したときの負荷は0%で、無期限に0%のままです。負荷は負荷がかかったときにのみ跳ね上がりUITableViewController、その後は上記のように残ります。したがって、この膨大なCPU使用率はから発生する必要がありUITableViewControllerます。

誰かアイデアはありますか?テキストの巨大な壁でごめんなさい。コードを投稿する必要がある場合は、質問してください。

助けてくれてありがとう、
よろしく、
マイク

4

2 に答える 2

2

デバッガーでアプリを実行し、遅いときにランダムに停止します。次に、すべての異なるスレッドが実行していることを確認します。あなたはすぐにあなたが予期しない何かを見つけるかもしれず、犯人である可能性があります。

デバッガーの一時停止ボタンを押してから、すべてのスレッドを展開して呼び出しスタックを表示します。スレッドの呼び出しスタックにiOSの関数とメソッドのみが表示されている場合は、無視してかまいません。しかし、アプリのいくつかのメソッドが表示されている場合は、メソッドをクリックして調査します。メソッドが現在実行されているのはなぜですか?なぜそれがこの特定の線に引っかかっているのですか?

これは、パフォーマンスのデバッグに対する貧乏人のアプローチの一種です。高度なアプローチは、Instrumentsを使用することです。

于 2013-01-02T14:54:48.387 に答える
0

私は非同期ネットワーク要求の全負荷を実行します。ただし、これは、要求が通常1秒以内に実行され、JSONがダウンロードされてすぐに解析されるため、CPU使用率が上昇したままになる理由を説明していません。

通常、彼らは逆のアプローチを使用します。Twitterのようなよくできたアプリは、何かが更新されたときにアプリに通知を送信するサーバーを使用します。

この記事をチェックしてください。

于 2013-01-02T14:32:34.207 に答える