これは、テーブルビューのカスタム セルを表示するために使用しているコードです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"CustomCell";
CustomeCellHome *cell = (CustomeCellHome *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomeCellHome" owner:self options:nil];
for (id currentObject in topLevelObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (CustomeCellHome *) currentObject;
break;
}
}
}
NSString *strImgUrl = [[[[myarray valueForKey:@"mykey1"]objectAtIndex:indexPath.row] valueForKey:@"url"] objectAtIndex:0];
[[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:cell.imgView];
cell.imgView.imageURL = [NSURL URLWithString:strImgUrl];
cell.lbl1.text = [[myarray valueForKey:@"mykey2"]objectAtIndex:indexPath.row];
cell.lbl2.text = [[myarray valueForKey:@"mykey3"]objectAtIndex:indexPath.row];
cell.lbl3.text = [[myarray valueForKey:@"mykey3"]objectAtIndex:indexPath.row];
cell.lbl4.text = [[myarray valueForKey:@"mykey4"]objectAtIndex:indexPath.row];
cell.lbl5.text = [[myarray valueForKey:@"mykey5"]objectAtIndex:indexPath.row];
cell.lbl6.text = [[myarray valueForKey:@"mykey6"]objectAtIndex:indexPath.row];
}
CustomeCellHome は UITableViewCell のサブクラスで、Nib を使用して表示しています。CustomeCellHome にはすべての IBOutlet があり、Nib に接続されています。すべての IBOutlet はプロパティであり、合成され、dealloc メソッドでそれを解放しました。
一度に50件のレコードをテーブルビューに表示しています。ユーザーがさらにレコードを表示したい場合は、次のボタンをクリックしてそれを表示し、前のボタンをクリックして前のレコードを表示することもできます。
ユーザーが次のボタンを押すと、Web サービスが呼び出され、サーバーから次の 50 レコードが取得されます。以前の 50 レコードを配列に保持し、この新しいレコードをその配列に追加しています。しかし、「myarray」では、テーブルビューに表示するために一度に50個しか保持していません(一度に50個のレコードしか表示していないことを意味します)。
850 から 900 またはそのレコードの近くを表示しようとすると、テーブル ビューが引き伸ばされ、しばらくすると停止して表示されます。
また、1450 から 1500 またはそのレコードの近くを表示した後、メモリ警告が表示され、アプリがクラッシュします。私はこれを取得していません。なぜそうなのですか?
メモリツールで確認しましたが、メモリリークはありませんでした。カスタム セルの表示に間違った方法を使用していますか、それとも Web サービス呼び出しによりメモリが増えていますか?
誰でも私を案内してください。前もって感謝します。