2011-01-24 3 views

ответ

5

Сделайте как можно меньше в основной теме. Используйте NSOperations/GCD и другие фоновые методы, чтобы загрузить все с основного потока. И что говорили все остальные :)

2

Не используйте большие изображения/видео/аудио файлы или не инициализируйте много объектов, которые активно не используются, и отпустите, когда это возможно.

2

Если вы используете UITableView, убедитесь, что заранее подготовили все свои данные и просто извлеките его из соответствующего экземпляра класса модели в своем tableView: cellForRowAtIndexPath: метод делегирования - иначе будет убивать отзывчивость.

Кроме того, сделайте правильную вещь и убедитесь, что вы используете метод dequeueReusableCellWithIdentifier в предоставленном UITableView.

5

Ваш вопрос является общим, но ответ «Управление памятью».

Все ответы, представленные до сих пор, попадают в эту категорию. Если вы играете на медиа (видео, аудио, фото) или показываете данные (используя UITableView), вы хотите оптимизировать для низкой памяти.

Трюк состоит в том, чтобы загружать только то, что вам нужно, и ничего больше в любой момент времени.

Также, GCD.

+1

+1 Согласитесь, хотя с моим ответом UITableView ответная реакция на пользовательский интерфейс также является серьезной проблемой. –

+0

Это вопрос высокого уровня, мне нужно научиться так много, чтобы все было как можно быстрее. Каждый ответ помогает мне :-) –

+2

На самом деле, наоборот, часто бывает так. Вы можете использовать тонну памяти для предварительной или кэширования большого количества звуковых сигналов, растровых изображений, изображений и т. Д., Чтобы представить их в пользовательском интерфейсе почти мгновенно (без нагрузки или времени рисования). Чем больше вы можете предварительно загрузить и предварительно обработать (возможно, лениво в фоновом режиме), тем меньше время загрузки, которое пользователь когда-либо увидит. Для скорости используйте столько же памяти, сколько ОС позволит вам использовать этот кеш. – hotpaw2

2

Профилируйте все методы и функции, которые запускаются в основном потоке пользовательского интерфейса, и убедитесь, что все они (включая подпрограммы и делегаты) занимают меньше 16 миллисекунд, чтобы полностью выйти из цикла выполнения. Убедитесь, что все ваши обновления интерфейса пользовательского интерфейса вместе с этими методами пользовательского интерфейса также занимают менее 16 мс макс. Тогда ваш пользовательский интерфейс может работать со скоростью 60 кадров в секунду (что максимально возможно для текущих устройств) и вряд ли пропустит какие-либо входные события.

Все остальное, все загрузки изображений, все сетевые передачи данных, вся обработка и т. Д., Запускаются async и/или в фоновом потоке.

(И что все остальные сказали, а ... :)

1

Использование основных данных в максимально возможной степени. Я никогда не видел случая, когда использование основных данных хуже, чем использование другого метода.

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