You mention ARC… aren’t you not supposed to explicitly release objects under ARC? Am I misunderstanding?
Sandor > On Aug 23, 2023, at 18:48, JPH via Cocoa-dev <cocoa-dev@lists.apple.com> > wrote: > > Hello friends, > > The enclosed procedure is producing a NSImage from another NSImage, by > cropping in a NSRect. > The resulting sub-Image feeds an imageView in the APP Interface and the may > change frequently, then being hopefully disposed by ARC > The last line of the procedure : > NSImage *subImage = [[NSImage alloc] initWithCGImage:subImageRef > size:NSZeroSize]; > Generates a leak problem. > > it is quite unclear if i should release or not the subImageRef. > > If I release, the app crashes soon after. > If I don’t release, Instrument/Leaks reports a leak of subImageRef after > each call. > > Obviously, ARC never releases subImageRef which, as far as I > understand, is owned by the subImage after the call. > > Digging the web , apple doc, and various AI, did not provide a solution to > this dilemme. > > I would greatly appreciate some help on this > > Happy summer.. > JP > > C > //============================================================================= > + (NSImage *)getSubImageFromImage:(NSImage *)image atRect:(NSRect)rect > //============================================================================= > { > // Convert the NSImage to a CGImageRef > CGImageRef imageRef= nil, subImageRef= nil; > imageRef = [image CGImageForProposedRect:NULL context:nil hints:nil]; > if (imageRef == nil ) { return nil; } // Failed to create CGImageRef > // Get the subimage from the CGImageRef > subImageRef = CGImageCreateWithImageInRect(imageRef, rect); > CFRelease(imageRef); > if(subImageRef == nil ) { return nil; } // Failed to create subImageRef > // Convert the subimage CGImageRef to an NSImage > NSImage *subImage = [[NSImage alloc] initWithCGImage:subImageRef > size:NSZeroSize]; > // CFRelease(subImageRef); // it is quite unclear if i should release the > subImageRef > //If I release, the app crashes soon after. > // If i dont release Instrument/Leaks report a leak at next call. > // The subImage goes to a NSbutton in the interface, and will also soon be > replaced by another one, producing a leak of subImageRef > > return subImage; > }// getSubImageFromImage > _______________________________________________ > > 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/admin.szatmari.net%40gmail.com > > This email sent to admin.szatmari....@gmail.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