我有一个标签栏应用程序,其中一个标签栏中有 7 个单独的 UISwitch 实例。当我运行应用程序并使用开关转到选项卡栏时,我会调用
[self dismissModalViewControllerAnimated:YES completion:nil];
然后我打电话
[self presentModalViewController:myController animated:YES completion:nil];
当我使用 7 es 返回同一个标签栏UISwitch
并触摸其中一个并更改状态时,应用程序崩溃了。所以我启用NSZombie
了对象并再次运行应用程序,这一次当它崩溃时,它给出了错误消息
[UICGColor 保留]:发送到已释放实例 0x9ace8a0 的消息
这意味着该对象被双重释放,我显然没有尝试这样做。NSZombie
因此,我做了一些研究,发现通过使用 Xcode 内置工具使用模板分析应用程序,我可以找到导致它双重释放的代码行。然后我故意导致应用程序崩溃,我收到了这个。
我可以清楚地看到我的 ChessTimer 库多次释放对象,导致它双重释放。因此,我接下来查看了正在执行此操作的确切代码行并发现了这个
我现在可以看到直接导致问题的代码行。当我删除它们时,应用程序运行良好。然而,问题是这些代码行是我必须保留的应用程序中的一个重要设计元素。我什至不知道为什么这些代码行会导致应用程序再次释放该对象。我怎样才能中和这种解除分配或找到另一种解决方法?感谢所有帮助。