I wish that Apple provided a convenient method for doing this as it seems like something that could regularly be employed. I don't think I'll go as far as using SQL, but thanks for all the tips!!
On Tue, May 12, 2009 at 7:11 PM, Bradley S. O'Hearne < br...@bighillsoftware.com> wrote: > Eric, > I think one of the more effective ways to cache images is to store your > image to the file system, and then store meta-data for that image in a local > SQL database. That meta-data should include a "last updated" date for the > image. Then, instead of requesting the image directly from the server, first > request its meta-data from the server, which will return meta-data > indicating if the image has been updated on the server or not. If it has, > download the new image, write it to your local file system, and update the > meta-data in your local SQL database. If not, just continue to use the > existing local image. > > I don't know what sizes your images are, or how many you are processing at > once, but if you are going to try to construct an in-memory cache for the > images mentioned, make SURE you pay close attention to the > > - (void)didReceiveMemoryWarning > > method and manage your cache accordingly should that method get called. > Otherwise, what might appear as a wonderful optimization may end up being an > effective means to crash your app. > > I hope that helps. > > Brad > > On May 12, 2009, at 2:22 PM, Luke the Hiesterman wrote: > > > On May 12, 2009, at 2:13 PM, Eric E. Dolecki wrote: > > Okay, so I know I can somehow cache them... but I have some noob questions. > > - how do I cache the images themselves? Some binary data object written to > > the disk? How? > > > If you're caching to memory, all you really need to do is retain the > UIImage and keep a reference around so you can get to it later. To cache to > the disk, you could encode your UIImage to NSData using NSKeyedArchiver, and > then write to a file. > > > - how do I check if the image has already been loaded (check an > > NSMutableArray populated with dictionaries with a url string and url key?) > > > I would have the following keys in my dictionary: > 1. URLKey > 2. MemoryCacheReferenceKey - this contains a reference to a UIImage in > memory > 3. FileReferenceKey - this contains a file path where the image can be > cached on disk. > > > - if I find that the image has been cached (somehow), how do I use that > > image instead? > > > Using the above dictionary scheme, I would first check if my > MemoryCacheReferenceKey is valid. If so, I use that UIImage and be done. > Otherwise, I would check for a file at the location in FileReferenceKey and > use that if it exists. If I don't find anything in either of those caches, I > would download the image using the URLKey. > > Hope that helps. > > Luke > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > > http://lists.apple.com/mailman/options/cocoa-dev/brado%40bighillsoftware.com > > This email sent to br...@bighillsoftware.com > > > -- http://ericd.net Interactive design and development _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com