4

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

断言失败:(addr != MAP_FAILED),函数 _open_and_mmap_for_reading,文件 /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 中崩溃。设备崩溃时,我从未在控制台中看到任何消息。

有任何想法吗?

4

1 回答 1

3

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

width="393025px"

当我调用以下行时:

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

我得到了一个疯狂的宽尺寸:(width=393158, height=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)

解决了这个问题。

于 2013-10-04T22:17:47.370 回答