iOS [xxxxController respondsToSelector:]: message sent to deallocated instance 0x1310293e0崩溃问题
2018-02-23 14:33
513 查看
崩溃原因:
场景复现:
从产品列表页跳转到产品详情页,返回到产品列表页,切换tabItem,再返回到产品的tabItem,出现崩溃到main函数的现象,使用僵尸模式复现崩溃现象,得到
问题解析:
由于控制器释放,又再次向这个VC调用了某些请求导致崩溃。出现该问题的原因,大部分是由于实现了
查找原因:
针对该控制器VC中所有添加delegate的代码,一个一个排查,最后发现在基类BaseViewController中使用了
错误解决办法:
在该控制器VC的
在该控制器VC的
正确解决办法:
在该控制器VC的基类BaseViewController中进行解决:
ps:个人见解,如有错误,还请评论指出,多多指教。
同步简书地址:https://www.jianshu.com/p/9810f21f262d
[xxxxController respondsToSelector:]: message sent to deallocated instance 0x1310293e0
场景复现:
从产品列表页跳转到产品详情页,返回到产品列表页,切换tabItem,再返回到产品的tabItem,出现崩溃到main函数的现象,使用僵尸模式复现崩溃现象,得到
[xxxxController respondsToSelector:]: message sent to deallocated instance 0x1310293e0的崩溃原因。
问题解析:
由于控制器释放,又再次向这个VC调用了某些请求导致崩溃。出现该问题的原因,大部分是由于实现了
xxx.delegate = self;当VC释放后,这个xx还没有被释放,所以xx的回调方法还在调用delegate即这里的VC,所以崩溃就发生了。
查找原因:
针对该控制器VC中所有添加delegate的代码,一个一个排查,最后发现在基类BaseViewController中使用了
self.navigationController.delegate = self;进行实现导航控制器代理方法了,使用完之后没有释放。
错误解决办法:
在该控制器VC的
- (void)dealloc {}方法中实现
self.navigationController.delegate = nil,由于dealloc的延迟调用,还是无法解决问题。
在该控制器VC的
- (void)viewWillDisappear:(BOOL)animated {}方法中实现
self.navigationController.delegate = nil,但是会导致基类BaseViewController的导航控制器代理方法失效。
正确解决办法:
在该控制器VC的基类BaseViewController中进行解决:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.navigationController.delegate = self; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; self.navigationController.delegate = nil; }
ps:个人见解,如有错误,还请评论指出,多多指教。
同步简书地址:https://www.jianshu.com/p/9810f21f262d
相关文章推荐
- [**ViewController respondsToSelector:]: message sent to deallocated instance崩溃问题解决方法
- iOS开发 [SY_InformationController respondsToSelector:]: message sent to deallocated崩溃信息
- 崩溃 [XXXX respondsToSelector:]: message sent to deallocated instance 0x7fe2d3e404f0
- [****ViewController respondsToSelector:]: message sent to deallocated instance
- ViewController respondsToSelector:]: message sent to deallocated instance
- delegate---[ViewController respondsToSelector:]: message sent to deallocated instance 0x7f84
- [xxx respondsToSelector:]message sent to deallocated instance和空地址崩溃 空指针
- [HelpViewController respondsToSelector] message sent to deallocated instance
- [****ViewController respondsToSelector:]: message sent to deallocated instance
- [****ViewController respondsToSelector:]: message sent to deallocated instance
- Xcode做ios开发时 message sent to deallocated instance问题的解决方法(gdb和lldb)
- iOS开发 message sent to deallocated instance问题解决
- [CALayer release]: message sent to deallocated instance iOS内存过度释放问题
- ios message sent to deallocated instance 重复release 内存问题
- ios -[MTMeViewController scrollViewDidScroll:]: message sent to deallocated instance 0x7fc0f6f2
- iOS 崩溃内存泄漏-[STGiftOperationManager retain]: message sent to deallocated instance 0x60400092a8c0
- iOS [MTMeViewController scrollViewDidScroll:]: message sent to deallocated instance
- [CALayer release]: message sent to deallocated instance iOS内存过度释放问题
- iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance)
- iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance)