UIImagePNGRepresentation泄漏内存

时间:2012-08-08 06:45:49

标签: objective-c ios uiimagepngrepresentation

我在代码中使用了以下行

  NSData *dataForImage=UIImagePNGRepresentation(image);

我的应用程序因内存不足而崩溃。当我使用VM跟踪器/分配时,它会显示堆增长。我分析了代码。它显示我在线上泄漏为100%。 UIImagePNGRepresentation方法需要更多的内存分配吗?据我所知,它返回一个自动释放的对象。

如果我做错了,请告诉我。

编辑: 泄漏仪器没有泄漏。我使用了分配工具,然后将快照用于特定功能。它显示了我的堆增长。我认为它更多地使用app后应用程序崩溃负责。在快照中我使用了“扩展详细信息”,它显示我100%在线上

编辑:希望这会有所帮助

-(IBAction)Save{

                MyInfo *myInfo = [[MyInfo alloc]init];
                if (theimageView.image != nil) {

                     UIImage *image=[theimageView.image fixImageOrientation];
                    [myInfo set_image:image];
                    NSData *dataForImage=UIImagePNGRepresentation(image);
                    image=nil;

                    [myInfo set_imageData:dataForImage];
                    dataForImage=nil;
                }
  [tempArray addObject:myInfo];
  [myInfo release];
  myInfo=nil;
  // Here I have added myInfo object in array and released that object


 }

在上面的代码中,fixImageOrientation是为UIImage编写的类别。

1 个答案:

答案 0 :(得分:2)

我的猜测是造成问题的UIImagePNGRepresentation(image)方法。你需要把水池排干。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSData *dataForImage=UIImagePNGRepresentation(image);

[pool release];

或在ARC

@autoreleasepool
{
    NSData *dataForImage=UIImagePNGRepresentation(image);
}