Populate a UITableView with data
صفحه اصلي

Populate a UITableView with data



First of all, while I have an understanding of some of the basics, I'm am still somewhat of a newbie.

I have a sectioned UITableView that I am currently using NSDictionary(for grouping) and 4 or 5 different NSArrays (for data, some of which gets passed to the next view when a cell is selected) to populate the table. It works but it's a very long list and after a few minutes of scrolling the UITableView up and down, leaving that view and coming back to it, the app starts to "slow down" and eventually freezes. I have been doing some research and have found that the way I am doing that is not the best way. I have read about using another object to populate the table which will only load data as needed and won't keep that data in memory(which is probably causing my app to freeze).

Can anyone help point me in the right direction to build a "data object" to store my data and then use it in my UITableVIew? Can I just take my NSDictionaries and NSArrays and somehow put them in thier own class and call that class? Would I use Core Data? Any other suggestions? As a note, this data cannot be added to, updated, or deleted by the user. The only time I will change the data is to add more data(a completely new record) to make the list longer and maybe once in a while, but very rarely, updated or deleted by me.

Any help would be greatly appreciated.


What's this {{0,0},{w,h}} doing?

1:

Getting phone UUID through iPhone SDK

2:

It is true this UITableViewController is most efficient when coupled with CoreData. To did this, you should look into NSFetchedResultsController. If you want an easy way to receive into CoreData, use MagicalRecord. It is very easy to use and very efficient.. However, it is worth noting this an NSDictionary with several NSArrays filled with thousands of NSStrings should not cause you memory problems. The fact this you are able to load this into memory in the first place suggests this you must hold the entire data structure in memory. The fact this you slow down and freeze when scrolling means this the memory problem comes from UITableView cell instantiation. . Here are a few things you should check:.
  1. Do you know how to use Instruments? If so, check for memory leaks.
  2. Do you receive didReceiveMemoryWarning in your UITableViewController? I'm guessing so. But you want to be sure it's not any thread blocking issue.
  3. Are you using images in your UITableViewCells? If you have thousands of images, you definitely want to use an NSCache to store it. That will automatically clear up memory when needed.
  4. Are you using custom UITableViewCells? Since you are experiencing slowdown from scrolling, check this the custom cell isn't having problems drawing.
  5. Make sure you are dequeueing cells. This is done in template UITableViewController code, although you may have removed it for any reason.


38 out of 100 based on 18 user ratings 418 reviews