gpt4 book ai didi

iPhone UI addSubview导致并发异常

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:40 24 4
gpt4 key购买 nike

这真的很奇怪......

我运行我的应用程序,当它打开并且正在构建 View 时,我得到:

Collection <CALayerArray: 0x124650> was mutated while being enumerated.

代码跟踪经历了以下过程:

main
UIApplicationMain
-[UIApplication _run]
CFRunLoopRunInMode
CFRunLoopRunSpecific
_UIApplicationHandleEvent
-[UIApplication sendEvent:]
-[UIApplication handleEvent:withNewEvent:]
-[UIApplication _runWithURL:sourceBundleID:]
-[UIApplication _performInitilizationWithURL:sourceBundleID:]
-[AppDelegate applicationDidFinishLaunching:]
+[Controller initializeController] //This is my own function
[window addSubview: pauseMenuController.view] //This is the last point of my code it goes through
-[UIView(Hierarchy) addSubview:]
-[UIView(Internal) _addSubview:positioned:relativeTo:]
-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:]
-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
-[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
_NSFastEnumerationMutationHandler
objc_exception_throw

我已经运行了很多很多次这个游戏,但我从未见过这个,然后它突然弹出。奇怪的是,我不会创建任何其他线程(据我所知),直到 这段代码都被调用为止。如果有人能给我一些解释,说明在 UIView 中访问它时可能会修改什么,我调试起来会更容易。它是否与在 View 中添加某些东西有关,而它已经添加了一些东西,也许?有什么想法吗?

最佳答案

您的 View 是否可能有一个子层,您在其中将委托(delegate)指定为 View ?这通常会导致 View 在调用 _makeSubtreePerformSelector:withObject:withObject:copySublayers: 时无限递归(好吧,直到它达到堆栈限制),但我想它可能会在这里尝试做任何事情涉及突变。

之所以如此,是因为 UIView 假定如果 CALayer 的委托(delegate)是 UIView,则 CALayer 属于 UIView,而 UIView 是层次结构的一部分。但是,如果您创建自己的 CALayer 并将委托(delegate)分配给 UIView,UIView 最终将调用自身作为递归的一部分。

关于iPhone UI addSubview导致并发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1711700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com