Ser*_*nce 4 iphone cocoa-touch objective-c uinavigationcontroller ios
我有一个UIViewController需要使用UINavigationControllerDelegate,特别是willShowViewController方法.
我正在设置<UINavigationControllerDelegate>我的实现,然后我将委托设置为self in viewDidLoad(self.navigationController.delegate = self;).然后我实现了该willShowViewController方法并且它工作正常,但是当视图控制器从堆栈弹出时,存在内存泄漏并且我的应用程序崩溃.我已经尝试self.navigationController.delegate = nil;过这两种方式viewDidUnload,dealloc但它没有帮助.
我可以在我的一个viewcontrollers中实现此委托的正确方法是什么?
viewDidUnload不一定会被调用(它主要用于处理低内存条件)并且在dealloc调用时,视图控制器可能不再包含在导航控制器中,因此self.navigationController也是如此nil.
我建议nil在您的viewWillDisappear:实现中设置委托(并将其设置为viewWillAppear:而不是viewDidLoad).
顺便说一句,你看到的是与内存泄漏完全相反的情况.内存泄漏将是无法再访问的内存,永远不会被释放.这里有你已经释放的内存(你的视图控制器),但仍然被(悬空)指针引用,导致崩溃.真正的泄漏通常不会直接导致崩溃.
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |