У меня есть источник данных для UITableView.Иногда я получаю indexOutOfBound исключение в методе cellForRowAt, потому что это может произойти, когда метод tableView's numberOfRowsInSection вызвал и затем переключает контекст, и там по какой-то причине элементы в dataSource необходимо обновить (удаляет определенные элементы и добавляет обновленныеверсии этих элементов), но когда он просто удаляет элементы и перед добавлением новых элементов контекст переключается обратно и пытается загрузить ячейки, но затем некоторые элементы удаляются, поэтому выдается исключение.
Я хочу удалить и добавить привязку в блоке, чтобы он менял контекст только после выполнения полного блока, т. Е.
[self removeObjects:@[ lastUserChatMessage ]];
lastUserChatMessage.state = KUSChatMessageStateFailed;
[self upsertObjects:@[ lastUserChatMessage ]];
Я хочу, чтобы контекст никогда не переключался после первого утверждения.Он должен выполняться до последнего оператора.
Может ли блок @syncronized служить этой цели?Но помните, что все сделано в главной теме.