0

我有一个标签栏应用程序,其中一个标签栏中有 7 个单独的 UISwitch 实例。当我运行应用程序并使用开关转到选项卡栏时,我会调用

[self dismissModalViewControllerAnimated:YES completion:nil];

然后我打电话

[self presentModalViewController:myController animated:YES completion:nil];

当我使用 7 es 返回同一个标签栏UISwitch并触摸其中一个并更改状态时,应用程序崩溃了。所以我启用NSZombie了对象并再次运行应用程序,这一次当它崩溃时,它给出了错误消息

[UICGColor 保留]:发送到已释放实例 0x9ace8a0 的消息

这意味着该对象被双重释放,我显然没有尝试这样做。NSZombie因此,我做了一些研究,发现通过使用 Xcode 内置工具使用模板分析应用程序,我可以找到导致它双重释放的代码行。然后我故意导致应用程序崩溃,我收到了这个。 在此处输入图像描述

我可以清楚地看到我的 ChessTimer 库多次释放对象,导致它双重释放。因此,我接下来查看了正在执行此操作的确切代码行并发现了这个在此处输入图像描述

我现在可以看到直接导致问题的代码行。当我删除它们时,应用程序运行良好。然而,问题是这些代码行是我必须保留的应用程序中的一个重要设计元素。我什至不知道为什么这些代码行会导致应用程序再次释放该对象。我怎样才能中和这种解除分配或找到另一种解决方法?感谢所有帮助。

4

0 回答 0