C (хорошо, это не мой фаворит, но это еще не было сделано.)
РЕДАКТИРОВАНИЕ: Я мог, вероятно, придумать больше, если бы я обратился к большему количеству кода библиотеки (как, я сделал с сокетами, но те особенно плохи), но я уже чувствовал, что обманывал для того, чтобы выбрать C. Столько языков существует только, чтобы взять хорошие части C и заменить плохое, что он отчасти похож на избиение мертвой лошади.
NSFetchedResultsController - невероятно удобный вспомогательный класс для взаимодействия Core Data с вашими UITableViews. Я бы рекомендовал использовать его с каждым табличным представлением, имеющим поддержку Core Data. В каждом случае, в котором я его использовал, он значительно сокращал объем кода, который мне приходилось писать.
С точки зрения производительности это также может привести к огромному улучшению. Вместо выборки всего набора данных, если вы используете -setFetchBatchSize: с NSFetchRequest, который вы вводите в NSFetchedResultsController, вы можете выполнять пакетную выборку, когда выбираются только соответствующие данные, отображаемые в вашем табличном представлении. Данные, которые больше не отображаются, также могут быть автоматически удалены из памяти (или я так понимаю).
Для таблиц с умеренными и большими наборами данных это может привести к значительному выигрышу в производительности.