このページは「iPhoneプログラミング入門」(工学社刊、ISBN 978-4-7775-1541-7)を読んで、もっと先へ進んでみたいと思った人への説明です。

次へ->
<-前へ
「次の一歩」一覧へ

最も簡単なテーブルの作り方4

テーブル表示用の文字列を格納する配列

Objective-Cの配列

今作りたいのは、図2のように、「Red」「Blue」「Green」という文字列をそれぞれ表示させる三つの欄です。
図2 表示させたいテーブル
これらの文字列は、「配列」に格納しておきます。 Objective-Cの配列には2種類あります。一度決めた配列の要素は書き換えられない(追加はできる)配列と、あとから書き換えられる配列です。 本章では、固定文字列を表示させるだけですから、一度決めたら書き換えられない配列を使いましょう。これはNSArrayクラスのオブジェクトになります。

配列はどこで宣言するか?

テーブルに表示させるデータを格納する配列、すなわちNSArrayクラスのオブジェクト。これはFirstTableViewControllerのプロパティにするという考え方もあります。アプリケーション上で、テーブルのデータを変更できるようにする場合は、プロパティにするべきです。
でも今回は固定文字列ですから、実装ファイル内に一時的な変数として定義しておけば十分です。わざわざヘッダファイルで@property宣言をする必要もありません。

配列オブジェクトを示す変数を宣言

ということで、実装ファイル内、リスト5(前のページ)の@synthesize文のあとに、リスト7のように変数theListを宣言します。(灰色のコードは、「そのまんま手をつけない」部分です)
リスト7 NSArray型のオブジェクトを示す変数theListを宣言
@synthesize theTableView;
NSArray *theList=nil;
リスト7では、変数の宣言だけがしてあります。今、この変数が指しているのは「nil」、空です。「NSArray」というクラスの指定は、アプリケーション起動時に作成されるNSArrayオブジェクトを指す予定であるョということです。さて「アプリケーション起動時」とは具体的にどこでしょうか。

アプリケーション起動時に配列作成

それは「viewDidLoadメソッド内」です。 viewDidLoadメソッドは、作成された段階では「コメントアウト」されていますので、「アンコメント」します。すなわち、メソッドをはさんでいる「/*」と「*/」の記号を削除します。
viewDidLoadメソッドが有効になったら、リスト8のように書きます。
リスト8 配列を作成し、変数theListに割り当てる
- (void)viewDidLoad {
    
	theList=[
			[NSArray alloc] initWithObjects: @"Red", @"Green", @"Blue",nil
		];
	
}
リスト8はどこかで見たことがありませんか?そう、本書で学んだ文字列(NSStringクラス)の新規作成の仕方と、よく似ているのです。
allocメソッドで「できかけた」配列オブジェクト」に対して、メソッドinitWithObjectsを用います。
メソッド名からして明らかですね。「以下のオブジェクトを用いて初期化しなさい」ということです。それは3つの固定文字列を列記したものです。

注意!列記の最後はnilでシメる
しかし、オブジェクトを列記したあとにnilがついていることに注意してください。「空」を表すnilは、ここでは「配列に加えるオブジェクトはここで終わり」ということを表しています。ファイルにおける「EOF記号」のようなものです。このnilは必ずつける必要があります。

これで、配列theListが完成しました。viewDidLoadメソッドの編集も終わりです。

作成した配列はdeallocでrelease

作成したtheListの中味は、メソッドdealloc 中で解放しておきます。リスト9のように メソッドdeallocを編集します。
リスト9 メソッドdeallocで配列theListを解放
- (void)dealloc {
	
[theTableView release];
[theList release];
[super dealloc];
}

次は、配列データをテーブルに表示させるメソッドの定義です
ちょっとホネですよ。