使用Assertion的UIWebView崩溃失败:(addr!= MAP_FAILED),函数_open_and_mmap_for_reading

时间:2013-10-04 22:17:47

标签: ios objective-c uiwebview

我有一个嵌入式UIWebView的应用。当我将特定页面加载到其中时,它会毫无例外地崩溃模拟器,但我在Xcode控制台中看到以下消息:

  

断言失败:(addr!= MAP_FAILED),函数   _open_and_mmap_for_reading,file /SourceCache/LanguageIdentifier_Sim/LanguageIdentifier-114/LanguageIdentifier.c,   593行。

有时,我在控制台中看到以下消息:

  

malloc: * mmap(size = 2097152)失败(错误代码= 12)

此崩溃发生在后台线程中:

Thread 20, Queue : com.apple.root.default-priority
#0  0x93c4ea6a in __pthread_kill ()
#21 0x92138e72 in _pthread_wqthread ()

我不认为这是我的记忆泄漏。这在模拟器和设备中在iOS6,iOS6.1和iOS7中崩溃。当设备崩溃时,我从未在控制台中看到任何消息。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

特定的HTML有一个具有以下样式的表:

width="393025px"

当我拨打以下电话时:

CGSize fitsSize = [self.webView sizeThatFits:CGSizeMake(CGRectGetWidth(self.view.bounds), CGFLOAT_MAX)];

我有一个疯狂的大小:(宽度= 393158,身高= 2763),我立即将UIWebView的大小设置为:

self.webView.frame = CGRectMake(0, 0, fitsSize.width, fitsSize.height)

显然,这很糟糕。 UIWebView无法处理那么大的问题。

将我的调整大小代码更改为

self.webView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), fitsSize.height)

修复了问题。