libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

NSArray/NSMutableArrayとオブジェクトの配列 (1/6)

作成:2011-02-15 09:21
更新:2011-11-13 21:13

■配列とNSArrayクラス

プログラミング言語では、多数の値を管理するのに「配列」が用意されています。Objective-Cにも配列はありますね。そして配列を使って、オブジェクトを管理することも可能です。例えば、こんな具合ですね。
NSString* arr[] = {@"Hello",@"Bye"};
これで、NSStringの配列が作成できます。id型を使って配列を用意すれば、さまざまなインスタンスを保管する配列も作成することができます。ごく単純なオブジェクトの管理であれば、これで十分でしょう。

が、せっかくObjective-Cというオブジェクト指向言語を使っているのですから、もっと便利にオブジェクトを管理するようなものが欲しいところです。

こうした「多数のオブジェクトを管理するための機能」として提供されているのが「NSArray」というクラスです。これは、さまざまな形でインスタンスを用意することができますが、もっともよく用いられるのは以下のようなやり方でしょう。
NSArray *変数 = [NSArray arrayWithObject:《id》];
NSArray *変数 = [NSArray arrayWithObjects:《id》,《id》,……];
これらは、NSArray内に保管するオブジェクトを指定してインスタンスを作成するためのものです。arrayWithObject:は1つのオブジェクトだけを引数に指定し、arrayWithObjects:はカンマでいくつもオブジェクトを続けて指定することができます。いずれも、引数に指定したオブジェクトを保管するNSArrayが作成されます。

NSArrayは、配列と同様、後でオブジェクトを追加したり、保管できる要素数を増やしたりすることはできません。保管できる要素の数は固定されており、インスタンスを初期化した段階で決められます。ですから、保管するオブジェクトが既に決まっているのであれば、このようにインスタンス作成の段階ですべて渡して作成したほうがよいでしょう。

では、実際の利用例をあげておきましょう。いくつかのNSStringを渡してNSArrayを作る場合、以下のような形になります。
NSArray* arr = [NSArray arrayWithObjects:@"Hello",@"Welcome",@"Bye",nil];
NSLog(@"%@",arr);
arrayWithObjects:を使い、その後に、保管したいNSStringを必要なだけ記述しています。ごく単純ですが、こうやってNSArrayを作ることができます。

ここで、一つ注目して欲しいのは、要素として用意した引数の最後にある「nil」です。nilは、オブジェクトが存在しない状態を示す特別な値です。Objective-CNSArrayのように多数のオブジェクトを管理するクラスを利用するとき、最後にnilを要素として付け加えるようにしてください。これにより、「ここが終端である」ということを明確に示すことができます。

nilを忘れると、うまくプログラムは上手く動きません。これはNSArrayを利用するとき、最初にハマるところなので、忘れないでおきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※NSArrayを作成し出力する

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray* arr = [NSArray arrayWithObjects:@"Hello",
               @"Welcome",@"Bye",nil];
        NSLog(@"%@",arr);
    }
    return 0;
}
※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る