Yes! +[UIImage imageNamed:] was The Caching Culprit™️. I was barking up the wrong object (UIImageView).
As per Eric's suggestion I've switch to +[UIImage imageWithContentsOfFile:], and now there's no image caching (as per Mike's suggestion to RTM: "This method does not cache the image object". I simply didn't notice/expect the docs would comment on that). Plus my code is much cleaner now as I can stop the flail of uniquing the filenames, deleting the sandbox files, etc... Thanks Eric & Mike! -Carl > On Sep 23, 2020, at 1:34 AM, Mike Abdullah <mabdul...@karelia.com> wrote: > > Correct, this is your issue. Have a read of the docs on +[UIImage > imageNamed:] They explicitly discuss the cache. This is not the API you > want. > > Mike. > >> On 23 Sep 2020, at 02:12, Eric Lee via Cocoa-dev <cocoa-dev@lists.apple.com> >> wrote: >> >> Ah maybe it is the use of `imageNamed:`. I believe that caches the image >> data in a system cache. Have you tried `imageWithContentsOfFile:`? >> >> https://developer.apple.com/documentation/uikit/uiimage/1624123-imagewithcontentsoffile >> >>> On Sep 22, 2020, at 16:56, Carl Hoefs <newsli...@autonomy.caltech.edu> >>> wrote: >>> >>> >>>> On Sep 22, 2020, at 1:46 PM, Eric Lee via Cocoa-dev >>>> <cocoa-dev@lists.apple.com> wrote: >>>> >>>>> I don't have a good answer, but I think this may be more that UIImage >>>>> caches the images, not UIImageView. Maybe you can find something in >>>>> UIImage's docs/headers? >>>> >>>> I think you may be on to something. This WWDC >>>> <https://developer.apple.com/videos/play/wwdc2018/219> session covers >>>> optimizing UIImage performance and has some info on what UIImage caches. >>>> >>>> How are you creating the UIImage? Are you retaining the UIImage anywhere >>>> outside of the UIImageView? >>> >>> >>> The path of UIImage creation is as follows: >>> >>> - For each manually-initiated processing pass of the app, a standard set of >>> 12 JPG files is written to the sandbox using the OpenCV::imwrite() >>> function, which creates a JPG from data values. The files have fixed >>> filenames. >>> >>> - When all 12 JPG files for a pass are written, I then use the following >>> code snippet to create the UIImages and display them on the main >>> UIImageView: >>> >>> NSMutableArray *uiImagesArray = [NSMutableArray new]; >>> for (NSString *file in [[NSFileManager defaultManager] >>> contentsOfDirectoryAtPath:self.sandboxPath error:NULL]) { >>> if ([file.pathExtension isEqualToString:@"jpg"]) { >>> UIImage *tempImage = [UIImage imageNamed:jpgFilename]; >>> if (tempImage) [uiImagesArray addObject:tempImage]; >>> } >>> } >>> UIImage *allAGFAImages = [UIImage animatedImageWithImages:uiImagesArray >>> duration:20.0]; >>> self.imageView.image = allAGFAImages; >>> >>> - When a new pass of the app is run, the sandbox contents are deleted (see >>> below), the uiImagesArray variable is set to nil, and the new JPG files are >>> written, using the same filenames as before. Note that I do not set each >>> UIImage in the array explicitly to nil. >>> >>> [[NSFileManager defaultManager] removeItemAtURL:[NSURL >>> fileURLWithPath:[self.sandboxPath stringByAppendingPathComponent:file]] >>> error:&error]; >>> >>> - If I add a uniquing string to the filenames for each pass, the problem >>> does not present itself. Otherwise the original (old) cached image contents >>> are displayed until the app is restarted. >>> >>> - I don't retain the UIImages anywhere other than adding them to the array >>> in the code snippet above. >>> >>> -Carl >>> >> >> _______________________________________________ >> >> 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: >> https://lists.apple.com/mailman/options/cocoa-dev/mabdullah%40karelia.com >> >> This email sent to mabdul...@karelia.com > _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com