我知道它有點泛泛,但是我們做了一切可能的事情來找到它是什麼,而我們卻做不到。Malloc創建UIImage時崩潰?
我們有這樣的崩盤發生在這裏和那裏,並非總是如此,在這條線:
[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
不是零,當我們創建圖像時,我們也嘗試過:[UIImage initWithData:data];
沒有分配,但同樣的事情。
編輯: 這是怎樣的代碼看起來像這樣一行之後:
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中設置一個斷點來調試和啓用殭屍 – Lefteris 2014-11-06 10:24:33
http://stackoverflow.com/questions/10587266/double-free-set-a-breakpoint-in-malloc-error-break-to-debug-在弧中通過這個鏈接。 – BHUMICA 2014-11-06 11:03:50
何不乾脆[UIImage的頁頭] initWithData:data.copy],看看它是如何去 – 2014-11-06 13:00:07