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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to