Я работаю над приложением Core Data, в котором есть приложение Mac, выступающее в роли «сервера», и iPhone в качестве клиента.Все идет гладко, за исключением того, что я сталкиваюсь с проблемами производительности.
Когда пользователь касается объекта, сервер должен вернуть некоторые объекты, связанные с этим объектом (ничего слишком тяжелого, обычно 3-4 объекта), и показатьпользовательский интерфейс, чтобы выбрать некоторые параметры.Это должно быть как можно быстрее.Время возврата в оба конца на сервер, сервер, извлекающий данные, форматирующий их, возвращающий клиенту, и клиент, создающий NSManagedObjects из данных (которые не могут быть дополнительно оптимизированы), составляет около 200 мс.Код, относящийся к представлению пользовательского интерфейса (который опять не может быть оптимизирован), требует около 150 мс.На iPod touch 2G под управлением iOS 4.0 одна строка кода, сохраняющая контекст управляемого объекта после импорта объектов, занимает от 150 до 200 мс.
Для меня это крики о том, что я должен быть фоном сохранения контекста управляемого объекта.Однако, насколько я понимаю, это не совсем отвечает моим потребностям.Если я хочу сохранить контекст управляемого объекта в фоновом потоке, то все объекты в нем должны быть созданы в фоновом потоке в отдельном контексте управляемого объекта, поэтому я не вижу никакого увеличения скорости, потому что все равно потребуется 100-200 мсек для сохранения, и я буду видеть еще больше накладных расходов, потому что мне все еще нужно будет сообщить моему основному потоку обновить свои управляемые объекты из сохраненного контекста управляемого объекта, прежде чем мой контроллер представления увидит, что ему нужнообновить себя.
Я упускаю очевидное решение?Есть ли что-то в Core Data, которое я мог бы использовать в этой ситуации, чтобы это помогло?Я не хочу бросать такой общий вопрос, как этот, но я совершенно не знаю, куда идти.