0

私は Xcode と iOS が初めてで、今日は Instruments ツールを使って実験しています。私が頭を悩ませるのに苦労していることがいくつかあります:

シナリオ:

UISearchBar を使用して UITableView をフィルター処理する単純なアプリを作成しました (ARC を使用して iOS5 をターゲットにします)。シンプルなコードで、派手すぎません。

私自身の学習のために、さまざまなアクションを実行しながら割り当てを監視していました。この特定の例では、検索バーに入力しています。

「割り当て」インストルメント ツールを使用すると、次の結果が得られます。

ここに画像の説明を入力

予想どおり、最初に検索バーに入力し始めると、割り当てられたメモリが突然急増することがわかりました。その後、さらに検索を行っても、割り当てグラフに大きな違いはありません。

しかし、「ゾンビ」インストゥルメント ツールを使用してメモリ割り当てを確認すると、検索バーに入力するたびに割り当てグラフが上昇し続けます。

ここに画像の説明を入力

最初は、これは私が追跡していたものではないかと思い、すべての設定が一致していることを確認しようとしました。ただし、検索するとまだ上昇グラフが表示されます。

誰かがこれについて説明していますか?これらのツール モードのそれぞれでアロケーション ツールが追跡しているものについて、概念的な誤解があることは間違いありません。

4

1 に答える 1

2

Zombies インストルメントは、アプリにオブジェクトを解放しないように指示することで機能します。代わりに、オブジェクトの割り当てが解除されると、アプリはオブジェクトを割り当てたままにしますが、オブジェクトのクラスを、ゾンビ エラーを発生させてメッセージを処理する特別なゾンビ クラスに変更します。

したがって、実際に割り当てが解除されるものは何もないため、ゾンビ楽器の下で割り当てが増え続けます。

ちなみに、Zombies を使用するとアプリはオブジェクトの割り当てを解除できなくなるため、Zombies インストゥルメントでアプリを実行するには通常、より多くのメモリが必要になります。これは、Mac (および Mac で実行されている iOS シミュレーター) では問題ありません。Mac にはおそらく数ギガバイトの RAM があり、ディスクへのページングもサポートされているためです。しかし、iOS デバイスには 256 MB から 1 GB の RAM しかなく、ページングは​​サポートされていません。これがおそらく、Instruments が iOS デバイスで Zombies を使用できない理由です。

于 2012-08-07T06:40:34.237 に答える