iOS-メモリ管理

iOSのメモリ管理は、当初は非ARC(自動参照カウント)であり、オブジェクトを保持および解放する必要がありました。現在、ARCをサポートしており、オブジェクトを保持および解放する必要はありません。Xcodeは、コンパイル時に自動的にジョブを処理します。

メモリ管理の問題

Appleのドキュメントによると、メモリ管理における2つの主要な問題は次のとおりです。

  • まだ使用中のデータを解放または上書きします。これはメモリ破損を引き起こし、通常、アプリケーションのクラッシュ、またはさらに悪いことに、破損したユーザーデータをもたらします。

  • 使用されなくなったデータを解放しないと、メモリリークが発生します。割り当てられたメモリが二度と使用されないのに解放されない場合、それはメモリリークとして知られています。リークが発生すると、アプリケーションで使用されるメモリの量が増え続け、その結果、システムパフォーマンスが低下したり、(iOSでは)アプリケーションが終了したりする可能性があります。

メモリ管理ルール

  • 作成したオブジェクトは私たちが所有しており、その後、不要になったときにリリースする必要があります。

  • 保持を使用して、作成していないオブジェクトの所有権を取得します。これらのオブジェクトが不要な場合は、これらのオブジェクトも解放する必要があります。

  • 所有していないオブジェクトを解放しないでください。

ARCでのメモリの処理

ARCでリリースと保持を使用する必要はありません。したがって、View Controllerが削除されると、ViewControllerのすべてのオブジェクトが解放されます。同様に、オブジェクトのサブオブジェクトは、解放されたときに解放されます。他のクラスがクラスのオブジェクトを強く参照している場合、クラス全体が解放されないことに注意してください。したがって、デリゲートには弱いプロパティを使用することをお勧めします。

メモリ管理ツール

Xcodeツール機器を使用してメモリの使用状況を分析できます。これには、アクティビティモニター、割り当て、リーク、ゾンビなどのツールが含まれます。

メモリ割り当てを分析するための手順

Step 1 −既存のアプリケーションを開きます。

Step 2 −以下に示すように、[製品]、[プロファイル]の順に選択します。

Step 3 −以下に示す次の画面で[割り当て]を選択し、[プロファイル]を選択します。

Step 4 −以下に示すように、さまざまなオブジェクトへのメモリの割り当てが表示されます。

Step 5 −ビューコントローラを切り替えて、メモリが適切に解放されているかどうかを確認できます。

Step 6 −同様に、割り当ての代わりに、アクティビティモニターを使用して、アプリケーションに割り当てられたメモリ全体を確認できます。

Step 7 −これらのツールは、メモリ消費量にアクセスし、リークが発生した可能性のある場所を特定するのに役立ちます。