To be clear, CGImageForProposedRect doesn’t have ‘Create’ in the name. So the 'Create Rule' doesn’t apply. But it is an easy thing to overlook.
—Rob > On Aug 24, 2023, at 2:35 AM, JPH <turb...@free.fr> wrote: > > Thanks to all of you > The CFRelease(imageRef); was the problem and the CFRelease(subImageRef); is > OK > My fault was then to apply the old days « Create rule » , bypassing ARC ! > I was misled by Instruments/Leaks which reports a leak, which meant to me > that I had to look for a missing release, not an over-release !! > Very confusing ! > > Thank again > Happy Dog Days ( 41°C / 105,8°F here ! ) > > JP > > > >> Le 24 août 2023 à 00:55, Rob Petrovec <petr...@mac.com> a écrit : >> >> CGImageForProposedRect returns an autoreleased CGImageRef, so your >> CFRelease(imageRef) is an overrelease and likely the cause of your problem. >> The rest of the code looks fine, including the release of subImageRef (if it >> was uncommented). >> >> —Rob >> >> Le 24 août 2023 à 01:11, Alex Zavatone <z...@mac.com> a écrit : >> >> Got a small sample we could play with? I would expect the crash on explicit >> release as it would cause a double release. >> >> I tend to ignore I strums to with leaks and use the Memory Graph debugger >> religiously. >> >> If you have a little sample showing this, I would be happy to test a bit >> with it. >> >> Cheers, >> Alex Zavatone > > > Le 24 août 2023 à 07:44, Sandor Szatmari <admin.szatmari....@gmail.com> a > écrit : > > You mention ARC… aren’t you not supposed to explicitly release objects under > ARC? Am I misunderstanding? > > Sandor > >> >>> On Aug 23, 2023, at 4:47 PM, 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/petrock%40mac.com >>> >>> This email sent to petr...@mac.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