关闭视图控制器时发生奇怪的崩溃,自动布局是罪魁祸首?

2023-11-23

我遇到了一次非常奇怪的崩溃,这是回溯。

* thread #1: tid = 0x2403, 0x3379516c CoreFoundation`CFHash + 8, stop reason = EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xdefe)
    frame #0: 0x3379516c CoreFoundation`CFHash + 8
    frame #1: 0x33797a9c CoreFoundation`CFBasicHashRemoveValue + 1408
    frame #2: 0x337974ee CoreFoundation`CFDictionaryRemoveValue + 166
    frame #3: 0x3420988e Foundation`-[NSISEngine removeConstraintWithMarker:] + 562
    frame #4: 0x34211dbe Foundation`-[NSLayoutConstraint _removeFromEngine:] + 230
    frame #5: 0x35a954ec UIKit`-[UIView(UIConstraintBasedLayout) _layoutEngine_willRemoveLayoutConstraint:] + 44
    frame #6: 0x358488fc UIKit`__48-[UIScrollView _setAutomaticContentConstraints:]_block_invoke_0 + 148
    frame #7: 0x34208882 Foundation`-[NSISEngine withAutomaticOptimizationDisabled:] + 166
    frame #8: 0x35848838 UIKit`-[UIScrollView _setAutomaticContentConstraints:] + 116
    frame #9: 0x35848e6c UIKit`-[UIScrollView _rememberDependentConstraint:] + 112
    frame #10: 0x35a9e3ae UIKit`___updateViewDependenciesForConstraint_block_invoke_0 + 30
    frame #11: 0x35a954ba UIKit`_updateViewDependenciesForConstraint + 202
    frame #12: 0x35a953da UIKit`-[UIView(UIConstraintBasedLayout) _layoutEngine_didAddLayoutConstraint:roundingAdjustment:mutuallyExclusiveConstraints:] + 154
    frame #13: 0x35a95534 UIKit`-[UIView(UIConstraintBasedLayout) _tryToAddConstraintWithoutUpdatingConstraintsArray:roundingAdjustment:mutuallyExclusiveConstraints:] + 36
    frame #14: 0x3567c2e0 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 376
    frame #15: 0x356d34fe UIKit`-[UIScrollView _didMoveFromWindow:toWindow:] + 50
    frame #16: 0x3567c5c6 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 1118
    frame #17: 0x35676e52 UIKit`-[UIView(Hierarchy) _postMovedFromSuperview:] + 138
    frame #18: 0x3565e7dc UIKit`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 1300
    frame #19: 0x3565e2c2 UIKit`-[UIView(Hierarchy) addSubview:] + 30
    frame #20: 0x356f68e8 UIKit`-[UITransitionView transition:fromView:toView:removeFromView:] + 972
    frame #21: 0x35937618 UIKit`__91-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:]_block_invoke_0238 + 388
    frame #22: 0x357499b8 UIKit`-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 4824
    frame #23: 0x357b9814 UIKit`-[UIViewController _dismissViewControllerWithTransition:from:completion:] + 1708
    frame #24: 0x357057c4 UIKit`-[UIViewController dismissViewControllerWithTransition:completion:] + 912
    frame #25: 0x000ccd40 Capture`-[INFTagSearchViewController cancelButtonTouched:](self=0x1f09ed50, _cmd=0x001b9d5f, sender=0x1e0265c0) + 76 at INFTagSearchViewController.m:48
    frame #26: 0x357470c4 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 72
    frame #27: 0x35747076 UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 30
    frame #28: 0x35747054 UIKit`-[UIControl sendAction:to:forEvent:] + 44
    frame #29: 0x3574690a UIKit`-[UIControl(Internal) _sendActionsForEvents:withEvent:] + 502
    frame #30: 0x35746e00 UIKit`-[UIControl touchesEnded:withEvent:] + 488
    frame #31: 0x3566f5f0 UIKit`-[UIWindow _sendTouchesForEvent:] + 524
    frame #32: 0x3565c800 UIKit`-[UIApplication sendEvent:] + 380
    frame #33: 0x3565c11a UIKit`_UIApplicationHandleEvent + 6154
    frame #34: 0x373655a2 GraphicsServices`_PurpleEventCallback + 590
    frame #35: 0x373651d2 GraphicsServices`PurpleEventCallback + 34
    frame #36: 0x33829172 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
    frame #37: 0x33829116 CoreFoundation`__CFRunLoopDoSource1 + 138
    frame #38: 0x33827f98 CoreFoundation`__CFRunLoopRun + 1384
    frame #39: 0x3379aebc CoreFoundation`CFRunLoopRunSpecific + 356
    frame #40: 0x3379ad48 CoreFoundation`CFRunLoopRunInMode + 104
    frame #41: 0x373642ea GraphicsServices`GSEventRunModal + 74
    frame #42: 0x356b0300 UIKit`UIApplicationMain + 1120
    frame #43: 0x000a297c Capture`main(argc=1, argv=0x2fd60cfc) + 116 at main.m:16
    frame #44: 0x3bb2bb20 libdyld.dylib`start + 4

您会注意到第 25 帧是我的代码进行的唯一调用,它是cancelButtonTouched看起来像。

- (IBAction)cancelButtonTouched:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

我不知道发生了什么,我以前从未遇到过这样的问题,根据系统调用,它似乎是自动布局问题。我验证了在崩溃发生之前在呈现视图控制器上调用了 viewWillApper ,因此我认为这是在呈现视图布局期间出现的问题。

关于如何将这个问题缩小到特定布局约束的任何想法?或者还有其他想法吗?

这在某些设备上是可以重现的,而在其他设备上则很少发生。所以是间歇性的。

Update

断点的屏幕截图。

enter image description here

Update 2

因此,解雇绝对是一个问题presentingViewController,忽略两层深度([self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil])工作正常,但显然不是想要的结果,我只想返回 1 级。这进一步让我相信存在“重新布局”观点的问题。


我似乎记得类似的事情,虽然不确定是不是完全相同的事情。就我而言,这是由于使用已经是子视图的视图调用 addSubview: (或 insertSubview:...) 引起的。虽然通常我认为 UIView 可以处理这个问题,但通过自动布局,似乎某些关联信息可能会在其他地方添加两次,并且在尝试清除关联信息时可能会发生崩溃。就我而言,解决方案是确保我只添加一次子视图,并且此崩溃(或无论如何我的类似崩溃)消失了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关闭视图控制器时发生奇怪的崩溃,自动布局是罪魁祸首? 的相关文章

随机推荐

  • 使用 phantomjs 的 cntlm 代理

    我正在尝试在 Windows 计算机上使用 cntlm 代理来与 IIS 上使用 PhantomJS 的 Windows 身份验证的本地 Web 应用程序进行通信 要创建代理 我正在执行以下操作 cntlm v u username dom
  • django-为什么重定向后,表单显示“无”

    我有一个表单 输入信息后 根据信息过滤数据库并进行一些计算 最后将结果显示到重定向的网址 我确实可以重定向到另一个网址并成功显示结果 但问题在于它无法显示用户提交的任何数据 只是对每个字段不显示任何内容 并且结果不是基于过滤后的查询集 比如
  • 用opencv找到手绘线的端点

    我试图找到手绘线的两个端点 我写了这个找到轮廓的片段 但终点不正确 img cv2 imread my img jpeg img gray cv2 cvtColor img cv2 COLOR BGR2GRAY Binary Thresho
  • 限制可以在范围内运行的协程的最大数量

    我正在将当前的应用程序从 Java 翻译为 Kotlin 并且遇到了这个问题 java实现过去使用线程从服务器传输数据 它将创建大约 100 个不同的线程来请求数据 但据我所知 一次运行的线程不会超过 4 个 其他线程会等待线程完成后再开始
  • JQuery 或 JavaScript:如何确定在单击锚标记超链接时是否按下了 Shift 键?

    我有一个调用 JavaScript 函数的锚标记 无论有没有 JQuery 如何确定单击链接时是否按下了 Shift 键 以下代码不起作用 因为只有按下 真实键 而不是 Shift 键 时才会触发按键 我希望如果只按下 Shift 键它就会
  • Rails 嵌套表单错误,子项必须存在

    我正在遵循教程 http www amooma de screencasts 2015 01 22 nested forms rails 4 2 我正在使用 Rails 5 0 0 1 但是当我注册酒店时 似乎酒店类别必须存在 1 个错误导
  • Angular ngx-datatable 一列中的多个数据

    我在向 ngx datatable 中的列添加多个 prop 时遇到了一个小问题 columns prop semesterName name resizeable false prop eventName name resizeable
  • 自动启动AppFabric缓存集群

    有没有办法在系统启动时自动启动缓存集群 我在远程 PC 上运行它 当它重新启动时 我必须远程进入它并使用 Start CacheCluster 从 Powershell 重新启动缓存集群 并且不想这样做 Thanks James Yes i
  • 将自定义对象保存在共享首选项中

    我想保存自定义对象myObject在共同的偏好中 这个自定义对象的位置ArrayList
  • 错误页 - 如何在 JSP 中打印堆栈跟踪

    我已经使用 spring SimpleMappingExceptionResolver 在 Spring 应用程序中创建了异常处理 一切正常 现在我需要以某种方式打印 jsp 页面中捕获的异常 像消息和堆栈跟踪之类的东西 在我的 jsp 中
  • 使用一对多关系时,有没有办法控制子实体的顺序?

    根据https developer android com training data storage room relationships 我们可以有一对多的关系 public class UserWithPlaylists Embedd
  • 如何在 EditText 中设置文本

    如何设置 EditText 的文本 如果您检查文档EditText 你会发现一个setText 方法 它需要一个String and a TextView BufferType 例如 EditText editText EditText f
  • 在 python 中使用 setattr()

    我正在寻找有人解释如何使用的基础知识 而不是使用setattr 我的问题出现在尝试使用一个类方法 函数返回数据 然后将其放入另一个方法 函数中 在这种情况下 也许更简单的方法会更好 但我试图理解类是如何工作 使用的 这个问题似乎取决于set
  • 部分索引有哪些限制?

    最新版本的 MongoDB v3 2 添加了对部分 过滤 索引 您在创建索引时提供一个过滤器 该过滤器确定索引中将引用哪些文档 哪些不会 我可以使用任何过滤器表达式 只要它是有效的过滤器 吗 或者所使用的过滤器有限制吗 如果是这样 这些限制
  • Android 等宽空格 ( ) 宽度与字符宽度不同

    我正在开发一个小网络应用程序 我尝试使用绘图字符以某种 ASCII 艺术方式显示一些输出 然而 我注意到 Android 上的空间 nbsp 与其他字符的宽度不相等 导致输出难看 我把字体设置为monospace甚至尝试了monospace
  • 如何高效地为List的所有元素添加前缀?

    我有一个列表 我需要在列表的所有元素中添加前缀 下面是我通过迭代列表然后添加它来执行此操作的方法 还有其他更好的方法吗 有任何一二班轮可以做同样的事情吗 private static final List
  • CSS 拉伸背景图像

    我有一张大图像用作background image一个页面的 我想要的是图像的高度将被拉伸以填充页面的高度 也应该居中 background black url image background jpg no repeat fixed ce
  • VBScript:如何利用函数返回的字典对象?

    我正在尝试从函数返回字典 我相信该函数工作正常 但我不确定如何使用返回的字典 这是我的功能的相关部分 Function GetSomeStuff Get a recordset Dim stuff Set stuff CreateObjec
  • RabbitMQ pika.exceptions.ConnectionClosed

    我尝试使用 RabbitMQ 发送消息和接收消息 我没有计算机科学背景 我使用的术语可能不是很准确 我尝试复制教程文件 当提交我的 html 表单时 我的 python 脚本 cgi 消息正在提交到队列 connection pika Bl
  • 关闭视图控制器时发生奇怪的崩溃,自动布局是罪魁祸首?

    我遇到了一次非常奇怪的崩溃 这是回溯 thread 1 tid 0x2403 0x3379516c CoreFoundation CFHash 8 stop reason EXC BREAKPOINT code EXC ARM BREAKP