首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复“模型的轮廓消费?”Swift 5上的运行时崩溃

如何修复“模型的轮廓消费?”Swift 5上的运行时崩溃
EN

Stack Overflow用户
提问于 2019-04-27 04:10:22
回答 1查看 1.4K关注 0票数 4

我刚刚把我的一个应用升级到了Swift 5,我没有做太多的改变,似乎也没有任何问题,所以我只是在生产中发布了它(幸运的是分阶段发布)。1天后,我开始在Crashlytics上看到一个非常奇怪的崩溃,影响了15%的人使用我的应用程序。

这是堆栈跟踪:

代码语言:javascript
复制
Crashed: com.apple.main-thread
0  (Missing)                      0x31698aa1503e0 (Missing)
1  libswiftCore.dylib             0x1afa5ac68 _swift_release_dealloc + 28
2  App                            0x104194c3c outlined consume of MyModel? + 4300033084
3  App                            0x104482cb8 @objc MyController.__ivar_destroyer (<compiler-generated>)
4  libobjc.A.dylib                0x180f267cc object_cxxDestructFromClass(objc_object*, objc_class*) + 148
5  libobjc.A.dylib                0x180f366b8 objc_destructInstance + 68
6  libobjc.A.dylib                0x180f36720 object_dispose + 16
7  UIKitCore                      0x1ae2edac0 -[UIResponder dealloc] + 152
8  UIKitCore                      0x1add173e0 -[UIViewController dealloc] + 1748
9  App                            0x10431d82c BaseViewController.__deallocating_deinit (MyController.swift:56)
10 App                            0x10431d85c @objc BaseViewController.__deallocating_deinit (<compiler-generated>)
11 libobjc.A.dylib                0x180f41b9c (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 672
12 CoreFoundation                 0x181d59f40 _CFAutoreleasePoolPop + 28
13 CoreFoundation                 0x181cd8e00 __CFRunLoopRun + 1932
14 CoreFoundation                 0x181cd8354 CFRunLoopRunSpecific + 436
15 GraphicsServices               0x183ed879c GSEventRunModal + 104
16 UIKitCore                      0x1ae2c3b68 UIApplicationMain + 212
17 App                            0x104108468 main (AppDelegate.swift:21)
18 libdyld.dylib                  0x18179e8e0 start + 4

我已经在网上搜索了一些东西,但我只在Swift论坛上找到了一个与此无关的帖子。

MyModel实际上是一个嵌套在另一个模型中的结构模型。MyController是管理模型的非常庞大的控制器。

当弹出控制器以及系统试图释放所有相关属性时,显然会发生崩溃。

我试着复制了很多次,都没有结果,我真的不知道从哪里开始寻找。

有人也有同样的问题?

更新部分修复:它似乎是由广告框架引起的堆栈损坏,为了修复这个问题,我将MyModel从结构移到了类,它现在在堆上,不能被双重释放。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-10 15:42:48

根据我的经验,大多数outlined consume of错误都是由并发问题引起的。当一个队列/线程读取结构,而另一个队列/线程在不同步(互斥、信号量、屏障等)的情况下修改结构时。

您需要检查所有线程堆栈,以查看哪个线程与主(崩溃)线程同时访问MyModel

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55874358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档