それは基本的な質問かもしれませんが、答えを知りたいだけです。iOS Obj C プログラムで int、NSString、NSDictionary、NSData などの各変数を作成するときに占有されるメモリの量。データ型のサイズに基づいて(または)異なるCプログラムに似ていることを願っていますか?
ありがとうございました!
それは基本的な質問かもしれませんが、答えを知りたいだけです。iOS Obj C プログラムで int、NSString、NSDictionary、NSData などの各変数を作成するときに占有されるメモリの量。データ型のサイズに基づいて(または)異なるCプログラムに似ていることを願っていますか?
ありがとうございました!
要するに、できません。少なくとも有用な方法ではありません。
ほぼすべてのクラスには、インスタンスの割り当てに直接クレジットされない任意の数の割り当てがあります。同様に、多くのクラス -- NSDictionary
、NSArray
、 -- は実際にはクラス クラスタNSString
の一部であるため、実際に割り当てられるのはサブクラスです。最後に、さまざまなコレクションとデータ クラスの場合、関連する割り当てのサイズは、その内容によって大きく異なります。一部のクラス( 、など) には、ファイルシステムからデータをマッピングしているという点で、実際にはヒープ割り当てによって表されない MB のデータが含まれる場合があります。UIImage
NSData
または、要約すると、class_getInstanceSize()
役に立たない。
代わりに、アプリの動作動作の体系的な特性として、アプリのメモリ使用量に注目する必要があります。Allocations Instrument は、メモリ使用量を適切に測定できます。さらに重要なことに、メモリの消費の原因を特定するのに役立ちます。
Objective-C オブジェクトのサイズは、信頼できない実装の詳細であると考える必要があります。それらはある環境から別の環境へとたまたま一貫しているかもしれませんが、それを保証するものではありません。さらに、あらゆる種類の巧妙な方法で実装される可能性があるため、それらのサイズを測定するための一貫した完全な方法はありません。
メモリ割り当てを正確に管理する必要がある場合は、それ自体が完全に有効な Objective-C である C 型を使用してください。
以下の Apple 開発者サイトのドキュメントが役に立ちます。