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

Reply via email to