Xcode 4.2で開発されたタブ付きアプリケーションでは、混乱する問題を発見しました。タブの1つでは、インデックスのようなものを表示するためのテーブルビューがあります。そこで私はviewDidLoad()メソッドで配列を初期化しました。例えば:タブ付きアプリケーションで初期化配列を使用できないのはなぜですか?
- (void)viewDidLoad
{
NSArray *array = [NSArray arrayWithObjects:@"abc", @"def", @"ghi", @"jkl", @"mno", nil];
self.arrayList = array;
[array release];
[super viewDidLoad];
}
その後、私は他の方法でこのArrayListのを使用します。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [arrayList count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [arrayList objectAtIndex:indexPath.row];
return cell;
}
しかし、Xcodeは私に、私はそれを実行するたびに "EXC_BAD_ACCESS" 信号を与えます。いくつかのブレークポイントを設定し、配列がviewDidLoad()で正常に作成されたことを確認しましたが、cellForRowAtIndexPath:(NSIndexPath *)indexPathメソッドを実行する前に、解放されたオブジェクトになりました。それが私がそのシグナルを得て、アプリケーションがクラッシュした理由です。だから、どのようにこの問題を解決するには?
Btw、問題が発生するビューコントローラは、UITableViewControllerではなくUIViewControllerから作成されます。しかし、私はテーブルビューを作成し、そのデータソースとデリゲートをFile's Ownerにリンクしました。それは重要ですか?