Заполните UITableView данными - PullRequest
       10

Заполните UITableView данными

2 голосов
/ 29 августа 2009

Прежде всего, хотя у меня есть понимание некоторых основ, я все еще новичок.

У меня есть секционированный UITableView, который я в настоящее время использую NSDictionary (для группировки) и 4 или 5 различных NSArrays (для данных, некоторые из которых передаются в следующее представление при выборе ячейки) для заполнения Таблица. Это работает, но это очень длинный список, и после нескольких минут прокрутки UITableView вверх и вниз, оставляя это представление и возвращаясь к нему, приложение начинает «замедляться» и в конечном итоге зависает. Я проводил некоторые исследования и обнаружил, что то, как я это делаю, не самое лучшее. Я читал об использовании другого объекта для заполнения таблицы, который будет загружать данные только по мере необходимости и не будет хранить эти данные в памяти (что, вероятно, приводит к зависанию моего приложения).

Может ли кто-нибудь помочь направить меня в правильном направлении, чтобы построить «объект данных» для хранения моих данных и затем использовать его в моем UITableView? Могу ли я просто взять мои NSDictionaries и NSArrays и каким-то образом поместить их в свой класс и вызвать этот класс? Буду ли я использовать основные данные? Любые другие предложения? Как примечание, эти данные не могут быть добавлены, обновлены или удалены пользователем. Единственный раз, когда я изменю данные, это добавлю больше данных (совершенно новую запись), чтобы сделать список длиннее и, возможно, время от времени, но очень редко, обновляться или удаляться мной.

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

1 Ответ

0 голосов
/ 17 февраля 2013

Действительно, UITableViewController наиболее эффективен в сочетании с CoreData . Чтобы сделать это, вы должны заглянуть в NSFetchedResultsController. Если вы хотите простой способ получить доступ к CoreData, используйте MagicalRecord . Он очень прост в использовании и очень эффективен.

Однако стоит отметить, что NSDictionary с несколькими NSArrays, заполненными тысячами NSStrings, не должен вызывать проблем с памятью. Тот факт, что вы можете загрузить это в память, предполагает, что вы можете хранить всю структуру данных в памяти. Тот факт, что вы замедляете и зависаете при прокрутке, означает, что проблема с памятью связана с созданием ячейки UITableView.

Вот несколько вещей, которые вы должны проверить:

  1. Знаете ли вы, как использовать инструменты? Если так, проверьте на утечки памяти.
  2. Получаете ли вы didReceiveMemoryWarning в вашем UITableViewController? Я так и думаю. Но вы хотите быть уверены, что это не проблема блокировки потоков.
  3. Используете ли вы изображения в ваших UITableViewCells? Если у вас есть тысячи изображений, вы определенно хотите использовать NSCache для их хранения. Это автоматически очистит память при необходимости.
  4. Используете ли вы пользовательские UITableViewCells? Поскольку вы испытываете замедление от прокрутки, убедитесь, что пользовательская ячейка не имеет проблем с рисованием.
  5. Убедитесь, что вы удаляете клетки из очереди. Это сделано в коде шаблона UITableViewController, но вы, возможно, удалили его по какой-то причине.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...