【发布时间】:2014-11-06 10:20:57
【问题描述】:
我知道它有点笼统,但我们尽一切可能找到它是什么,但我们就是做不到。
我们在这条线上时不时会发生这种崩溃,但并非总是如此:
[self.imageOperationQueue addOperationWithBlock:^
{
if(!data)
return ;
UIImage *image=[[UIImage alloc] initWithData:data]; // *** CRASH !
崩溃日志说:
malloc: *** error for object 0x7fecdb06e5c0: double free
*** set a breakpoint in malloc_error_break to debug
如您所见,在我们的检查中,data 在我们创建图像时不是 nil,我们还尝试了:[UIImage initWithData:data]; without allocation,但同样的事情。
编辑: 这是该行之后代码的样子:
if(!data)
return ;
UIImage *image=[[UIImage alloc] initWithData:data];
UIImageView *modelview=[self.allImageView objectAtIndex:index];
float newH=image.size.height* (1.65*modelview.frame.size.width/image.size.width);
CGSize s=CGSizeMake(1.65*modelview.frame.size.width, newH);
if (image)
{
UIGraphicsBeginImageContextWithOptions(s , NO, 0.0);
[image drawInRect:CGRectMake(0, 0, s.width, s.height)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
【问题讨论】:
-
是的,在 malloc_error_break 中设置断点来调试和启用僵尸
-
为什么不简单地 [[UIImage alloc] initWithData:data.copy] 看看结果如何
-
磁盘已满时出现此崩溃。还不知道怎么解决。
标签: ios objective-c uiimage