好的,事情是这样的,我提出了关于我的调试和崩溃的问题.因为我通常自己处理,但我只是cannot个人解决了这个问题,即使是在viewing multiple questions already个人之后.

好的,这就是问题所在,我发现我的应用程序在这个堆栈跟踪中随机地断断续续地崩溃:

*** -[ViewController respondsToSelector:]: message sent to deallocated instance 0x1e5d2ef0

其中ViewController可以变化,有时我的代码崩溃的地方与特定的ViewControllerNO个相关性,并且不拥有或调用它.

此外,为了获得控制台跟踪,我启用了僵尸,否则我根本不会得到控制台打印,我只会得到:objc_msgSend,我知道这意味着我正在发送发布的消息.但是我找不到它在哪里.我真的卡住了!通常我always调试我的崩溃,所以我真的被困在这件事上了.

再说一次,它在不同的时间、不同的地方、断断续续地崩溃.它坠毁的地方与ViewController的位置几乎有no个相关性.我觉得这很让人困惑.

你需要我的代码吗?我有a lot个文件,因为它在不同的地方崩溃,分发我的代码将是一团糟!

我曾try 添加符号断点,但没有成功,在iOS的Instruments应用程序上不能使用僵尸.我不能在模拟器上运行我的应用程序,因为它有不支持的架构框架.

谢谢大家...

推荐答案

使用Instruments跟踪释放的实例错误.分析您的应用程序(Cmd⌘+i),然后 Select Zombies模板.在应用程序运行后,try 使其崩溃.你应该买这样的东西:

在此处输入图像描述

单击弹出窗口中Address旁边的箭头,以显示在释放后调用的对象.

在此处输入图像描述

现在,您应该可以看到更改此对象保留计数的每个调用.这可能是因为直接发送保留/释放消息,以及清空自动释放池或插入NSArray.

RefCt列显示调用操作后的retainCount,Responsible Caller列显示执行操作的类名和方法.当您双击任何保留/释放时,仪器将向您显示执行此操作的代码行(如果此操作不起作用,您可以通过 Select 呼叫并在Extended Detail窗格中 Select 其对应项来判断呼叫):

在此处输入图像描述

这将让你判断对象的所有retainCount个生命周期,也许你会马上发现你的问题.你所要做的就是找到最新release的缺失retain.

Ios相关问答推荐

设置堆栈视图的所有属性

滚动时突出显示工具栏项目

SwiftUI@Observable不跟踪父类属性中的更改以更新视图

如何使用Xcode15.1在iMessage扩展模块中显示贴纸

将数据传回VC时委托为空

检测touch 并忽略其他手势SWIFT SceneKit

如何制作支持不同语言的iOS应用

如果使用 .onAppear 设置,为什么 SwiftUI Picker 不显示正确的选定值

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

动画文本位置

在左侧显示多行值时会出现 SwiftUI 错误,这会 destruct 堆栈中右侧的对齐方式

更改图标会导致 SwiftUI 动画出现故障?

在 Swift 中映射 MySQL 数据

何时需要将应用程序源包含在测试目标中?

在设备上卸载 ios 应用程序后如何在 ios 中保留 identifierForVendor?

UICollectionView - 动态单元格高度?

如何在 UIActivityViewController 中设置邮件主题?

SwiftUI 视图 - viewDidLoad()?

判断密钥是否存在于 NSDictionary 中

Parse for iOS:try 运行应用程序时出错