我在xcode上遇到了一些奇怪的行为。我没有完全得到错误,但代码执行在bkpt #207
停止,没有给出堆栈跟踪。
在我的程序中,每当切换选项卡时,我都会使用popToRootViewController。我以编程方式从MyViewController(在堆栈中为第3个)弹出然后再次单击选项卡后发生上述行为。我可以确认正确弹出了MyViewController。
使用NSZombiesEnabled,我得到以下输出:
*** -[MyViewController tableView:titleForHeaderInSection:]: message sent to deallocated instance 0x6a4a00
我的预感是MyViewController的一些残余仍然链接到该标签栏。我正在使用[self.tabBarController setSelectedIndex:kOtherTab]以编程方式切换标签。
任何指针都会非常感激。
答案 0 :(得分:4)
我在bkpt#207停止呼叫NSTimer:
[Timer invalidate];
[Timer release];
正确只是打电话
[Timer invalidate];
并且#207的停顿消失了。
答案 1 :(得分:1)
看起来tableview由于某种原因在委托被解除分配后调用它的委托(MyViewController)。
这里最好的办法是让MyViewController在取消分配时将tableView的委托设置为nil。