今日、再現できないバグに遭遇し、非常に混乱しています。わかりました少し背景:
私は現在、タブバーコントローラーを初期ビューコントローラーとして持つアプリに取り組んでいます。さまざまなタブ バー項目に接続された複数のナビゲーション コントローラーがあります。
それらの 1 つは、JSON から入力される tableViewController です。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
//NSMutableArray for storing loaded values
[pics addObject:imageLoad];
[names addObject:[aucdict objectForKey:@"name"]];
[idcka addObject:[aucdict objectForKey:@"auction_id"]];
// Configure the cell...
cell.nameLabel.text = [aucdict objectForKey:@"name"];
cell.priceLabel.text = [NSString stringWithFormat:@"%@",priceString];
cell.timeLabel.text = [NSString stringWithFormat:@"%@",timeString];
cell.thumbnailImageView.image = imageLoad;
return cell;}
行をクリックした後、performSegueWithIdentifier を実行します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"showAuctionDetail" sender:self];}
そして prepareForSegue で、次の ViewController にいくつかのデータを送信します
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
namesArray = [[NSArray alloc] initWithArray:names];
picsArray =[[NSArray alloc] initWithArray:pics];
IDarray = [[NSArray alloc] initWithArray:idcka];
if ([segue.identifier isEqualToString:@"showAuctionDetail"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
detailViewController *dViewController = segue.destinationViewController;
dViewController.selectedAuctionTitle = [namesArray objectAtIndex:indexPath.row];
dViewController.auctionPic = [picsArray objectAtIndex:indexPath.row];
dViewController.id_aukcie = [IDarray objectAtIndex:indexPath.row];
}}
今私の問題が来ます。ときどき (いつ発生するか分からないので、これは本当に混乱します) アプリケーションを起動して行をタップすると、まったく異なるデータが DetailViewController に渡されます。推測できる唯一のことは、配列が実際の JSON 応答とは異なる (値が多かれ少なかれ含まれている) ことです。しかし、それは、テーブルの最初または最後の項目 (境界外のインデックスなど) をクリックすると、アプリがクラッシュすることを意味しますが、それは決して起こりませんでした。
このバグがおそらく 5 回ランダムに発生するのを見てきました。アプリを 20 回続けて実行して終了しようとしましたが、それは 1 回だけでした。
PSクラス名(detailViewController)は大文字で始まる必要があることを知っています。申し訳ありません:)
編集:rdelmarが示唆したように