通常、テーブルをリロードしてもクラッシュしません。しかし、バックグラウンドでデータを取得し、テーブルをリロードしてそのデータを表示すると、同時にユーザーがテーブルをスクロールするとアプリがクラッシュします。理由は、オブジェクトの配列chatData
が空であるためです。どうして空っぽなのかわからない。テーブルをリロードする直前にオブジェクトを に設定したためchatData
です。ユーザーが同時にスクロールしている場合にのみクラッシュすることに注意してください。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Here app crashes when chatData is empty. Don't get why it is ever empty, because reloadData is called only after setting objects.
if ([user.userId isEqualToString:[[chatData objectAtIndex:row] objectForKey:SET_SENDER]])
{
}
}
- (void)refreshTable
{
.
.
.
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
self.chatData = [objects mutableCopy];
[chatTable reloadData];
}
}