这是有泄漏的代码块...

NSString *filename = [NSString stringWithFormat:@"%@.png", sketchID];
CGImageRef imageRef = CGBitmapContextCreateImage(paintView.canvas.mBitmapContext);
UIImage* image = [[UIImage alloc] initWithCGImage:imageRef];
NSData* imageData = UIImagePNGRepresentation(image);
  • 他们在哪里?
  • 一般而言,我该如何判断,以便将来不会造成泄漏?
  • 解决它们的正确方法是什么?

  • 非常感谢!

    最佳答案

    据我所知,您有以下回忆:

    CGImageRef imageRef = CGBitmapContextCreateImage(paintView.canvas.mBitmapContext);
    

    您需要调用CGContextRelease。检查this SO问题。

    您还需要释放image。创建imageData后,请执行以下操作:
    [image release];
    

    您不必释放fileName,因为您没有为它明确分配内存。当变量超出范围时,它将自动释放。 Objective-C中有一些命名约定,它们会告诉您什么时候必须释放,什么时候不需要释放。查看Apple文档。

    希望能帮助到你。

    07-28 06:20