应用程序在模态显示视图控制器时崩溃

Posted

技术标签:

【中文标题】应用程序在模态显示视图控制器时崩溃【英文标题】:Application is getting crash while presenting view controller modally 【发布时间】:2015-02-04 09:13:12 【问题描述】:

当我展示模态视图控制器时出现以下异常:

"应用程序试图以模态方式呈现一个活动控制器 "

但是这种崩溃只发生在一种情况下。

基本上我将子视图(webview)添加到呈现的控制器。 所有 html 内容的加载、webview 委托方法的实现等都在另一个类中完成。

我将在 webViewDidFinishLoad 方法中接收到的 webview 对象传递给呈现视图控制器,以将其添加到要呈现的控制器的子视图中。

它正在运行,但如果从服务器收到以下 html 响应,应用程序会崩溃:

<script type="text/javascript">document.write('<iframe frameborder="0" width="300" height="250" marginheight="0" marginwidth="0" target="_blank" scrolling="no" src="http://nym1.mobile.adnxs.com/if?e=wqT_3QKHBPBC_gEAAAIA1gAFCNnhtKYFEKmko7ePueCUbRikrovh65Dzh38gASotCeF6FK5H4co_EYqw4emVssQ_GQAAAAAAAPA_IRESBCnhDSSwMPK4-QE4rhVA7AdIAlDD4e0LWMr-ImAGaLPkA3AAeOrWAoABAYoBA1VTRJIBAQbwb5gBrAKgAfoBqAEGsAEAuAEBwAEFyAEA0AEA2AEA4AEA8AEAigJ0dWYoJ2EnLCA0NTEyMjQsIDE0MjI3MzM1MjkpO3VmKCdjJywgNjk4NjYzNCwgMTQyMjczMzUyOSk7dWYoJ2cnLCAxNzEwMTAxLCA-HQAocicsIDI0ODY3MDE6HgDwipICnQEhaVNhX2ZBaUt0Nm9ERU1QaDdRc1lBQ0RLX2lJd0FEZ0FRQUJJN0FkUThyajVBVmdBWU13RWFBQndBSGdBZ0FFQWlBRUFrQUVCbUFFQm9BRUJxQUVEc0FFQXVRSGhlaFN1Ui1IS1A4RUI0WG9VcmtmaHlqX0pBWVYxbWJIVHl2NF8yUUVBQUEBAyREd1AtQUJBUFVCAQ4wQUEuLpoCHSF4UVo2UDqgALh5djRpSUFBLtgCAOACrqQcgAMAiAMBkAMAmAMAoAMAqgMAsAMAuAMAwAOsAsgDAQ..&dlo=1"></iframe>');</script>

如果我在要呈现的视图控制器中执行所有 webview 委托方法实现,应用程序不会崩溃。意味着在模态视图控制器本身中加载 html 内容。

无法理解崩溃的原因

【问题讨论】:

什么是崩溃日志? 在控制台上打印以下消息 - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图以模态方式呈现活动控制器 。” ***第一掷调用堆栈:(0x28b7549f 0x3632bc8b 0x2c319ab5 0x2c31b587 0x2c11f5e1 0x2c148bc1 0x2c147ba9 0x2c147a3b 0x2c147529 0x2c06b4ed 0x2c06b3ff 0x2ba642d9 0x2299c7 0x22d3ed 0x28b3b3b1 0x28b39ab1 0x28a873c1 0x28a871d3 0x2fe850a9 0x2c096fa1 0xe387d 0x368abaaf)的libc ++ abi.dylib:与类型的未捕获的异常终止NSException 跨度> 【参考方案1】:

我猜您将 Web 视图对象传递给呈现的视图控制器,但该对象的委托仍然引用呈现的视图控制器,这就是问题所在。

【讨论】:

我无法将委托设置为 nil,因为我必须对 webview 点击操作执行一些操作 检查 didFinisLoading 是否被调用了两次。 是的,在某些情况下 didFinishLoading 被调用了两次并且应用程序崩溃了。 这就是问题所在。第二次回调时,它试图以模态方式呈现已经呈现的视图。 谢谢阿什拉夫。现在我可以通过检查控制器是否已经存在来解决这个问题。

以上是关于应用程序在模态显示视图控制器时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

连续的模态视图控制器在dismissModalViewControllerAnimated 上使应用程序崩溃

呈现模态视图控制器时 iPhone 崩溃

sigsegv segv_accerr 在 ios7 中崩溃 mkmapview

在 iOS 10 中以模态方式呈现新 VC 时崩溃

iOS UISearchController 崩溃:应用程序试图在自身上呈现模态视图控制器

显示模态视图控制器时设备旋转