2014-06-03 2 views
1

У меня есть то, что я воспринимаю как относительно сложную модель данных, с несколькими отношениями «многие ко многим», которые необходимы для того, чтобы получить нужные функции. Без ICloud все работает отлично: низкая загрузка процессора, использование памяти как правило, около 15 МБ/с, максимум 30.Проблемы памяти памяти icloud core

Я реализовал голые кости SYNCING ICloud Ядро данных следующие удивительно полезный учебник Тима Roadley нашла здесь http://timroadley.com/2012/04/03/core-data-in-icloud/

  1. Первый вопрос: при первом открытии приложения иногда наблюдается отставание, при котором данные не могут быть доступны. Я делаю NSFetchRequest и возвращаю пустой массив. Через несколько секунд я могу получить данные.

    Почему это происходит? Я думал, что с iCloud включен в Xcode 5, два хранилища данных были сделаны, один для локального использования и один для использования iCloud? не должен ли доступ к локальному магазину?

    Я получил вокруг первого бита, имея «портала» контроллер представления, так что отставание может (в большинстве случаев) можно преодолеть (иногда вы видите пустой TVC .. не рад)

  2. Второй вопрос, и более насущный: через несколько секунд (обычно около 15) что-то происходит в фоновом потоке, загрузка процессора увеличивается до 99%, а память идет с 10 до 100 мб/с. Он остается таким высоким: он не поднимается (и не падает), и он не падает на оставшуюся часть использования (я имею в виду, по крайней мере, 2 часа, когда он постоянно работал). Без грохота! просто любопытное взаимодействие интерфейса.

    Почему это происходит и как я могу его решить?

У меня нет большого понимания того, как работает синхронизация iCloud; какие-то журналы транзакций сделаны, хранятся как plists, и отправляются куда-то, и что-то происходит. Я предполагаю, что журналы транзакций, которые у меня есть, действительно большие, возможно, из-за нескольких отношений «многие ко многим», которые у меня есть? Этот вопрос предполагает, как таковые (не существует никакого решения его проблемы, и я также не имею все возрастающее использование памяти: шахта останавливается в определенной точке): Core Data with iCloud causing low memory warnings and crashes, memory usage constantly grows

мысль: - Если бы это было журналы транзакций, не следует ли их удалять в какой-то момент? скажем, после того, как журнал был загружен в icloud? почему он просто сидит там, занимая пространство? - Есть ли способ определить время, в котором выполняется синхронизация? или вручную удалить журнал транзакций? Кто-нибудь испытал это/решил?

+0

Похоже, пришло время, чтобы открыть приложение инструменты. – nhgrif

ответ

0

Josh,

Вы не разместили ни одного кода; поэтому дать совет немного ударил & пропустить. Предполагая, что у вас есть блок завершения в вашем запросе выборки, уверены ли вы, что это просто время, необходимое для получения данных из iCloud. Немного запутанный, но объясненный в этом протекте, iCloudKit не кэширует какие-либо данные локально, это просто транспортный механизм.

Using Core Data, iCloud and CloudKit for syncing and backup and how it works together

Ваш вопрос CPU Я подозреваю iCloudKit связаны, то вполне возможно выдать несколько запросов/потоков для iCloudKit. Посмотрите на мой вопрос, код здесь для вызывающей последовательности, если вы зацикливаете свой код iCloudKit, называя себя внутри себя, вы наверняка увидите поведение, которое вы описываете.

CKFetchRecordsOperation + CKQueryOperations ... what am I missing?

Смежные вопросы