NSArray
のサイズを取得し、NSLog
を使用してコンソールに印刷するにはどうすればよいですか?
int size = [array count];
NSLog(@"there are %d objects in the array", size);
別の答えへの答え:
少なくともややこしい、サポートされていない* Cブードゥー教を行うことなく、配列のサイズをメガバイト単位で取得することはできません。 NSArray
はクラスクラスターです。つまり、内部でどのように実装されているのかわかりません。実際、使用される実装は 配列内のアイテムの数に応じて変化します です。さらに、配列のサイズは、配列が参照するオブジェクトのサイズとは異なります。これらのオブジェクトはヒープ上のどこかに存在するためです。オブジェクトポインタを保持する構造体でも、ヒープ上の実際のcalloc
のすぐ隣にNSArray
'dとは限らないため、技術的には配列の「一部」ではありません。
配列構造体自体のサイズが必要な場合は、明らかに4バイトだけです。
NSLog(@"Size: %d", sizeof(NSArray));
プリント:
2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4
(確かに、それはまともな表現ではありません。なぜなら、NSArray
はおそらく別の種類のオブジェクト、通常はNSCFArray
のような抽象的なインターフェースだからです。NSArray.h
を見ると、 'NSArray
にはインスタンス変数がないことがわかります。他のオブジェクトを保持することになっているものにはかなり奇妙ですよね?)
*
「サポートされていない」とは、「推奨されない」、「クラスクラスターの内部の神秘主義を掘り下げる」、「ドキュメント化されていないプライベートAPI(存在する場合)」を意味します
サイズは、「カウント」をNSArrayインスタンスに送信することで決定でき、コンソールへの印刷はNSLog()を介して実行できます。例:
NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"array size is %d", [array count]);
配列サイズの質問については、この投稿をご覧ください
NSLogを使用してコンソールに書き込みます...
NSLog(@"The array size is %@", arraySize);
In Swift 4
let a = ["a"、 "b"]
a.count // 2