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

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

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

■NSMutableArrayとオブジェクトの追加・変更

保管しているデータを変更したり、自由に追加や削除を行うためには、NSArrayではなく、「NSMutableArray」クラスを利用する必要があります。これはNSArrayのサブクラスで、保管するオブジェクトを操作するためのメソッドが追加になっています。

NSMutableArrayは、NSArrayにあるコンビニエンスコンストラクタを利用してインスタンスを作成することもできますが、最初に何も入っていないインスタンスを作成し、それに必要に応じてオブジェクトを追加していくような使い方もできます。これには、以下のようなコンビニエンスコンストラクタがよく用いられます。
NSMutableArray* 変数 = [NSMutableArray array];
NSMutableArray* 変数 = [NSMutableArray arrayWithCapacity:《NSUInteger》];
arrayメソッドはNSArrayにあるもので、空っぽのインスタンスを作成します。arrayWithCapacity:は、あらかじめいくつかのオブジェクトを保管するためのメモリを確保してインスタンスを作成するものです。といっても、これはあくまで初期値であり、後からオブジェクトを追加するなどすれば、それにあわせて自動的にメモリ量は調整されるので、なりなくなる心配はありません。

こうして作成したインスタンスに、メソッドを使ってオブジェクトを追加していきます。これも、さまざまな形があります。まず、末尾にオブジェクトを追加するものは以下のようになります。
[《NSMutableArray*》 addObject:《id》];
[《NSMutableArray*》 addObjectsFromArray:《NSArray*》];
単純にオブジェクトを1つ追加するなら、addObject:を利用します。NSArrayで多数のオブジェクトをまとめて追加するなら、addObjectsFromArray:が便利でしょう。

NSArrayでも似たようなメソッドはありましたが、あちらは「メソッドを追加した新しいインスタンスを作る」というものでした。NSMutableArrayは、自身にオブジェクトを追加していく点が異なります。

また、既に保管されているオブジェクトを変更するメソッドもちゃんとあります。これは、以下のようになります。変更したいインデックスと、新たに保管するオブジェクトをそれぞれ引数に渡します。
[《NSMutableArray*》 replaceObjectAtIndex:《id》 atIndex:《NSUInteger》];
では、インスタンス作成、オブジェクトの追加、変更といった操作の簡単な例を以下にあげておきましょう。基本的な使い方さえわかれば、意外と簡単に配列が扱えることがわかりますね。

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

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

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableArray* arr = [NSMutableArray 
               arrayWithCapacity:1];
        [arr addObject:@"Helo"];
        [arr addObject:@"Hi"];
        [arr replaceObjectAtIndex:1 withObject:@"Bye!"];
        NSLog(@"%@",arr);
    }
    return 0;
}
※関連コンテンツ

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