记一次特别的bug
问题现象
push入某个特定的画页,然后再pop出来,然后再切换不同的tabbaritem就会崩溃,而且没有任何提示,也没法定位崩溃位置,哪怕用了$arg1.
猜测,这种情况坏访问的可能性比较大,至少本来在实际 开发中还没有出过这种情况,一般都会记得比如block、notificationcenter 、代理之类的处理。
操作
开启僵尸对象跟踪
好的,现在已经能定位到画页的方法了。
responseForSelector:
于是,打了个方法断点。奇怪,没有定到位。后面,想了想这个方法,很明显是用于代理调用时,判断代理是否响应这个方法的,至于为什么崩溃,就是因为这个代理已经销毁了,这个时间又去判断这个代理是否响应这个方法,故然出理坏访问了。
解决办法
查找页面内的.delegate = self;类似的代码。
定位到UINavigationController的一个代理。朋友为这什么要用这个代理呢,想实现,这个页面隐藏导航栏,而其他页面不隐藏导航栏。
我给出的解决方案
[self.navigationControoler setNavibarHidden:YES animated:YES];
当然离开这个画页时得
[self.navigationControoler setNavibarHidden:NO animated:YES];
另外的解决方法
在当前页面销毁时,记得把UINavigationController的代理置空
其实一般我们开发时,正确的做法就是,在画页消失或者销毁时就应该把dataSource及delegate还有相关对象全部置空,当然很多时候dataSource及delegate不用置空也没什么事。
举个最长见的例子
就是我们开发时一个控制器里有个tableView,然后当然也得设置其dataSource和delegate为self.这种情况下不用置空。那时因为控制器销毁时,这个tableView了销毁了,所以不存在还通过代理来调用当前控制器。
而朋友那个画页就不一样了,因为委托者为UINavigationController,这种情况就比较特别了,当当前画页销毁时,这个委托者是不会销毁的,所以就算画页销毁了也会被调用代理。
小记
记一次特别的bug的更多相关文章
- 记一次线上bug排查-quartz线程调度相关
记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...
- 捉BUG记(To Catch a Bug)
大约有一年整没有写一篇博客了,由于各种原(jia)因(ban)导致闲暇时间要么拿着IPad看岛国奇怪的片(dong)子(hua).要么拿着kindle看各种各样的资(xiao)料(shuo).本来想写 ...
- 记”Uri.IsWellFormedUriString”中的BUG
场景 先上逻辑代码 1: /// <summary> 2: /// 图片真实地址 3: /// </summary> 4: public string FullImagePat ...
- 表与表的关系把RD搞乱了,记一个Procedure中的bug
就是6张表的关联查询,写了一个存储过程,使用4层for来处理 bug:最后一个for中,两张表的关联条件少了一个,结果数据多查了. 排查办法:使用dbms_output.printline('');每 ...
- 记一次调试串口设备Bug的经历
最近花了差不多1天的时间在折腾一个Bug,该Bug的表象如下: 这个Bug还特别独特,在开发电脑中无提示,在终端用户那里每次使用软件的时候都报这个.仔细思考了一下最近在源码中新添加的功能,没发现有啥特 ...
- bug:记最近出现的非功能bug
1.android 4.1.2 的兼容bug 一直以为Android 测试 4 5 6就可以了,结果发现Android4.1.2 和Android4.3之间还是有差距的. 处理办法:验证版本兼容的时候 ...
- 记一个CRenderTarget中的BUG及解决办法
转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC ...
- 记一次erlang语言bug导致rabbitmq的队列没有消费者的问题
公司开发和测试环境采用的erlang版本是19.0.3,rabbitmq版本为3.6.10.集群条件下稳定使用了近一年时间,没什么问题. 为了保持和线下一致,线上生产环境采用了相同的版本,运行几个月后 ...
- 记一次CPU飙升BUG
图文地址:https://mp.weixin.qq.com/s?__biz=Mzg3NjEzODQ4NQ==&mid=2247483690&idx=1&sn=7c926f400 ...
- 记一次诡异的bug调试——————关于JDK1.7和JDK1.8中HashSet的hash(key)算法的区别
现象: 测试提了一个bug,我完全复现不了,但是最吊诡的是在其他人的机器上都可以复现.起初以为是SVN合并后出现的冲突,后来经过对比法排查: step 1: 我本地开两个jetty,一个跑合并之前的版 ...
随机推荐
- C# List 排序各种用法与比较
下面介绍各种List的sort的用法与比较 首先,我们建一个People的实体,有name.age.sex的属性,我们要排序的字段是年龄age 新建一个实体类 public class People ...
- HTML---用记事本写html
<DOCTYPE HTML> <--DOCTYPE 文档类型,浏览器按照该类型解析--> <html> <head> <title>这个是h ...
- SQL Server 2012 新特性:包含数据库访问数据库引擎
简单的说就是可以让包含用户访问其他数据库,那么来看看如何配置,并且验证一下: USE test CREATE USER up1 WITH PASSWORD = 'zhuzhu' SELECT * ...
- {"errcode":40097,"errmsg":"invalid args hint: [vjNe7xxxxxx8vr19]"}——记录一次微信错误处理
错误情况概述: 启动应用之后,微信调用 相机拍照 等接口是可以正常使用的, 但是过了一段时间(2个小时左右--token/jsapi_ticket的过期时间),微信调用相机拍照的功能失效,启用debu ...
- svn web页面管理svnadmin部署
1.yum install subversion 创建svn目录 mdkir -p /data/svndirroot 建立svn库 svnadmin create /data/svndirroo ...
- IISExpress Log 文件路径
问题 用VS做开发时经常用IISExpress测试web程序,那么在测试过程中生成的Log文件放在哪里了? 答案 情况1 默认情况下 applicationhost.config 文中定义了连个日志文 ...
- Android Studio导入Project、Module的正确方法
Gradle Project项目.Module模块导入 最近看到网上很多人在抱怨,Android Studio很难导入github上下载下来的一些项目,主要包括: 1.导入就在下载Gradle2.根本 ...
- [LeetCode] Add and Search Word - Data structure design 添加和查找单词-数据结构设计
Design a data structure that supports the following two operations: void addWord(word) bool search(w ...
- 《虚拟伙伴》AR增强现实应用开发总结
一.概述 1.1选题背景 随着时代的发展,人们的生活节奏越来越快,生活质量也越来越高,但却在繁忙之中忽略或者忘记了关心自己成长时代最重要或者最正确的事情和道理.虽然现在有很多社交平台,如微博,微信,f ...
- 编译自己的Ubuntu内核
很多时候我们在使用Ubuntu的时候,想修改一下内核配置,然后编译,安装到Ubuntu中.这也是进行Ubuntu内核开发的前提. 获取当前Ubuntu对应代码 有很多方法可以获得Ubuntu内核代码, ...