我正在使用UINavigationController来推送和弹出一个视图。
我使用[[self navigationController] pushViewController:myView animated:YES]
来推送视图。然后我点击左上角的后退按钮返回,我收到错误:
*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary superview]: unrecognized selector sent to instance 0x1451a0'
我想知道在调用后退按钮时调用哪个方法-popViewController
。
是否在第一个视图或第二个视图中发生此错误。
感谢。
答案 0 :(得分:3)
后退按钮应该被称为-popViewControllerAnimated:。但是,听起来你在这里有一个类过度发布的bug。基本上,你有一个视图,这被分配了一些。这个视图只是内存中的一个地址。在某些时候,您将此视图一直释放到retainCount为0.当发生这种情况时,视图将被释放。在此之后的某个时刻,正在使用与之前已释放的视图相同的内存地址创建一个NSDictionary。现在有些东西试图向你的观点发送一条消息,但它不再存在,相反,那里有一个NSDictionary。它说的是:[查看superview],但 view 现在指向一个dictiinary,它不响应superview。
底线:检查你的保留/释放/自动释放调用,并确保你没有过度释放你的一个视图(或查看控制器,尽管不太可能)。