首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIImagePNGRepresentation内存泄漏

UIImagePNGRepresentation内存泄漏
EN

Stack Overflow用户
提问于 2012-08-08 14:45:49
回答 1查看 1.8K关注 0票数 1

我在代码中使用了下面这行代码

代码语言:javascript
复制
  NSData *dataForImage=UIImagePNGRepresentation(image);

我的应用程序因为低memory.When而崩溃,我使用虚拟机跟踪器/分配,它显示了堆的增长。我分析了代码。它显示我在上面的线路上泄漏为100%。UIImagePNGRepresentation方法是否需要更多的内存分配?据我所知,它会返回一个自动释放的对象。

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

编辑:它不显示泄漏仪器中的泄漏。我使用了分配工具,然后使用heapshot来实现特定的功能。它向我展示了堆的增长。我认为这是应用程序崩溃的原因,在我使用了更多的app.In堆后,我使用了“扩展详细信息”,它显示我100%在上面的行

编辑:希望这能有所帮助

代码语言:javascript
复制
-(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编写的一个类别。

EN

回答 1

Stack Overflow用户

发布于 2013-04-11 10:12:34

我猜是UIImagePNGRepresentation(image)方法导致了这个问题。你得把池子里的水排干。

代码语言:javascript
复制
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSData *dataForImage=UIImagePNGRepresentation(image);

[pool release];

或在ARC中

代码语言:javascript
复制
@autoreleasepool
{
    NSData *dataForImage=UIImagePNGRepresentation(image);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11859051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档