iPhone / Obj-C - архивация объекта вызывает задержку - PullRequest
0 голосов
/ 25 мая 2010

Привет, у меня есть табличное представление, и когда я удаляю ячейку, я удаляю элемент из NSMutableArray, архивирую этот массив и удаляю ячейку.

Однако, когда я это делаю, после удаления я нажимаю кнопку удаления. Есть ли способ исправить это?

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        int row = [indexPath row]; 
        [savedGames removeObjectAtIndex:row]; 
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

        //this line causing lag
        [NSKeyedArchiver archiveRootObject:savedGames toFile:[self dataFilePath]];
    }    

}

Спасибо

1 Ответ

0 голосов
/ 25 мая 2010

Похоже, вы уже знаете ответ - не архивируйте все при каждом удалении. Это может быть сделано несколькими способами - архивирование только фрагментов за раз, отложенное архивирование (периодически / при выходе / из других политик) или значительно ускорение пользовательского кода архивации, что, я сомневаюсь, даже очень помогло бы в схеме вещи. Я слышал , что MAKeyedArchiver был быстрее, чем NSKeyedArchiver, но я полагаю, что это было некоторое время назад и разработано для mac +, потенциально зависящего от платформы (с другой стороны, это было задумано как капля замены NSKeyedArchiver API того времени, поэтому, если вы решите его использовать, должно быть мало времени интеграции).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...