UITableview に約 6000 ~ 8000 行をロードしたいと考えています。非同期呼び出しを使用してサーバーからデータを取得し、データを取得したら呼び出す
[tableView reloadData]
これは、テーブル ビューを更新するためのものです。しかし、何らかの理由でアプリが動かなくなってフリーズします。をデバッグすると、 cellforrowatindexpath が (メインスレッドで) 6000 回呼び出され、 dequeueReusableCellWithIdentifier が常に null を返すことがわかりました。
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CDTableRowCell *cell = nil;
// Create and Resue Custom ViewCell
static NSString *CellIdentifier = @"CellIdentifier";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// got into render/theme objec
if(cell == nil){
cell = [[CDTableRowCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
// MODIFYING CELL PROPERTIES HERE FROM AN ARRAY
// NO HTTP CALLS
}
また、スクロールを開始すると、テーブルビューはセルの再利用を開始しますが、その前に常に新しいセルを作成することはありません。この奇妙な動作の理由は何か?