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