How many objects should I retrieve from server and How many can be stored in NSCache?
Maybe you should use NSData to retrieve data from your service instead of NSCache.
NSCache is for temporary objects, however NSData is used to move data between applications (from your service to your app) 
Description of NSCache by Apple:
An NSCache object is a collection-like container, or cache, that stores key-value pairs, similar to the NSDictionary class. Developers often incorporate caches to temporarily store objects with transient data that are expensive to create. Reusing these objects can provide performance benefits, because their values do not have to be recalculated. However, the objects are not critical to the application and can be discarded if memory is tight. If discarded, their values will have to be recomputed again when needed.
Description of NSData by Apple:
*NSData and its mutable subclass NSMutableData provide data objects, object-oriented wrappers for byte buffers. Data objects let simple allocated buffers (that is, data with no embedded pointers) take on the behavior of Foundation objects.
NSData creates static data objects, and NSMutableData creates dynamic data objects. NSData and NSMutableData are typically used for data storage and are also useful in Distributed Objects applications, where data contained in data objects can be copied or moved between applications.*
My service return up to 500 objects at time i've notice that my iphone application is crashing when the amount of data goes over 60 objects. to workaround this issue I'm running a query that brings back only the top 40 results but that is slower than just returning the entire data

what are the best practices and how can i retrieve more objects?
what is the maximum amount of memory allocated to an application in iphone and is there a way to extend it?
How many objects should I retrieve from server
How many can be stored in NSCache?