Question: i am making an app that will have a very large dictionary of words i choose (so that the words aren't too complicated) and i want it to randomly choose the words. I dont have a problem with the randomly selecting words, but what would be the best way to store all these words, and how? I feel like using an NSMutable array would take up too much memory creating thousands of objects, so what else can i use... Thanks for you help

Answer: 
Core data!, is your best option, or to manage your own SQLite

check a [core data tutorial](http://www.raywenderlich.com/934/core-data-tutorial-getting-started)

or a [SQLite on iOS tutorial](http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_4_iPhone_Application)
If all all the application needs to do is access words at random (so no key based queries, or updates), an alternative to core data and SQLite would be to just `fseek()` to a random location in a flat text file of newline delimited words and then read out the next complete word, possibly with `fscanf(dict,"%s\n%s\n",partial_word,full_word)`.

Deal with EOF by retrying with a different random number, or limit the `fseek()` range to never hit last word in file.

An issue with the above outline is words won't be uniformly selected. There is a bias towards words following long words. Discarding `strlen(partial_word)` (or a larger random number) of words before keeping a word might help the distribution if it is a concern.