Как ускорить время загрузки в моем приложении - PullRequest
0 голосов
/ 04 ноября 2011

В настоящее время я работаю над приложением, которое запрашивает базу данных, в которой есть несколько таблиц, в некоторых таблицах есть ключевые поля, которые связаны друг с другом.

Если это так, когда я анализирую (или загружаю кеш формы, над которым я работаю) набор данных, связанный с другим набором данных, я хотел бы создать NSDictionary связанных значений, значение ключа которых равно скажем, равно выбранному значения ключа.

Первый вопрос: возможно ли это? Второй вопрос, о чем мне нужно подумать, прежде чем я попытаюсь сделать это. в какой момент я выполняю (что когда-либо инструкции), чтобы создать этот NSDictionary.

Чтобы дать вам лучшее представление о том, над чем я работаю, ознакомьтесь с этой блок-схемой, которую я сделал из предложенной мной логики приложений. enter image description here

Я не уверен, как сделать его больше ... но если вы сохраните его на рабочем столе, вы увидите ... следуйте MFG, чтобы увидеть, что я пытаюсь сделать.

любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 04 ноября 2011

Определенно возможно создать словарную структуру, как вы думаете, но она может быть очень сложной, очень быстрой.Другой метод может заключаться в использовании пользовательского подкласса NSObject для управления данными и связями, в которые вы можете затем встроить некоторое поведение, если вам нужно.

Чтобы убедиться, что ваше приложение загружается быстро, не загружайте эти данные до тех пор, покаКонтроллер корневого представления загружен и определенно не находится в -application:didFinishLaunchingWithOptions:, так как этот метод должен возвращать как можно скорее, чтобы системный сторожевой таймер не убивал ваше приложение с помощью 8badf00d из-за долгой загрузки.

Я бы порекомендовалзагрузка этих данных в фоновый поток, который запускается методом -viewDidLoad: вашего первого контроллера представления.Убедитесь, что это фоновый поток, а не основной, иначе ваш пользовательский интерфейс может быть заблокирован и не отвечает во время загрузки.Если вы используете фоновый поток, пользовательский интерфейс основного потока будет свободен во время загрузки, поэтому вы также можете показать пользователю индикатор выполнения или индикатор активности, чтобы показать, что ваше приложение занято, но не заморожено и не отвечает во время этого процесса загрузки..

...