我在代码中使用了下面这行代码
NSData *dataForImage=UIImagePNGRepresentation(image);我的应用程序因为低memory.When而崩溃,我使用虚拟机跟踪器/分配,它显示了堆的增长。我分析了代码。它显示我在上面的线路上泄漏为100%。UIImagePNGRepresentation方法是否需要更多的内存分配?据我所知,它会返回一个自动释放的对象。
如果我做错了什么,请告诉我。
编辑:它不显示泄漏仪器中的泄漏。我使用了分配工具,然后使用heapshot来实现特定的功能。它向我展示了堆的增长。我认为这是应用程序崩溃的原因,在我使用了更多的app.In堆后,我使用了“扩展详细信息”,它显示我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编写的一个类别。
发布于 2013-04-11 10:12:34
我猜是UIImagePNGRepresentation(image)方法导致了这个问题。你得把池子里的水排干。
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSData *dataForImage=UIImagePNGRepresentation(image);
[pool release];或在ARC中
@autoreleasepool
{
NSData *dataForImage=UIImagePNGRepresentation(image);
}https://stackoverflow.com/questions/11859051
复制相似问题