You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI iOS应用中点击WebView内链接/按钮导致程序意外崩溃

MAUI WebView iOS点击崩溃问题解决方案

问题描述

我的MAUI WebView应用在Android平台运行正常,但iOS平台上点击任何链接或按钮都会触发崩溃,崩溃日志显示内存分配错误(pointer being freed was not allocated),最终导致SIGABRT信号。已确认该问题与MAUI官方已知的两个问题相关(#17923、#11544)。

崩溃日志

2024-03-08 11:05:01.774516+0000 TestMaui2[8858:146865] SecTaskCopyDebugDescription: TestMaui2[8858]/0#-1 LF=0
Thread started: .NET Timer #5
2024-03-08 11:05:02.898907+0000 TestMaui2[8858:146865] [ResourceLoadStatistics] Failed to request allowed query parameters from WebPrivacy.
Thread started:  #6
Thread started: .NET TP Gate #7
Thread started:  #8
Loaded assembly: /Users/10ticks/Library/Developer/CoreSimulator/Devices/3209D81A-412F-4859-A55D-3CB8D97B8842/data/Containers/Bundle/Application/F6DC503C-0B9E-49BD-85C7-9DEF7B671798/TestMaui2.app/System.Xml.XmlSerializer.dll [External]
Thread started:  #9
Thread started:  #10
Thread started:  #11
TestMaui2(8858,0x204da5240) malloc: ** error for object 0x30d14b680: pointer being freed was not allocated
TestMaui2(8858,0x204da5240) malloc: ** set a breakpoint in malloc_error_break to debug
=================================================================
Native Crash Reporting
=================================================================
Got a SIGABRT while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application。

复现步骤

  • 创建包含WebView加载目标网站的MAUI应用
  • 在iOS模拟器或真机上启动应用
  • 点击页面内任意链接或按钮
  • 应用立即崩溃

解决建议

1. 升级MAUI SDK到最新稳定版

这类原生内存问题大多已在MAUI的后续版本补丁中修复,优先尝试升级你的.NET MAUI SDK到最新稳定版本(比如.NET 8的最新更新包)。

2. 自定义WebView导航事件处理

手动控制WebView的导航流程,避免默认导航逻辑的内存泄漏:
在代码后台添加导航事件处理:

private void WebView_Navigating(object sender, WebNavigatingEventArgs e)
{
    // 允许正常导航,替代默认处理逻辑
    e.Cancel = false;
}

在XAML中绑定该事件:

<WebView Source="https://你的目标网址" Navigating="WebView_Navigating" />

3. 调整iOS平台Info.plist配置

修改Platforms/iOS/Info.plist,添加App Transport Security配置,确保WebView资源加载权限正常:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

(注:若目标网站为HTTPS,可后续调整为更严格的配置,此配置用于快速排查问题)

4. 移除自定义WebView渲染器(若有)

如果你的项目中使用了自定义WebView渲染器,暂时移除并使用默认WebView测试,自定义渲染器可能引入内存管理问题。

内容的提问来源于stack exchange,提问作者Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:11:01