This is one of the classic tradeoffs in programming - speed and memory usage. The technique of reading something once and storing it on a faster environment (in this example, in memory) is called caching. It is very popular, and not in vain. Mass storage devices are still slower than RAM, and network access is slower than local mass storage.
If you assume that the data will often be asked by the manager, and if you assume that the plist will not change (or you will not be able to detect the changes), then read the plist the first time you access the recipient, save it in iVar, and respond only with iVar, for now the layer has not changed. This uses a little more memory, but much faster for subsequent calls.
NOTE. This approach will be harmful for very large files. If you are concerned about memory usage, implement the - (void)didReceiveMemoryWarning in your view manager and clear the cache (delete it) when you have low memory.
The getter method might look like this:
- (NSArray *)data { if (!cacheArray) {
source share