前几天项目出现一个bug,由于启动时在viewDidLoad里面干的事情太多了,卡住了,这个时候测试人员重复点击了页面上的一个按钮,按钮点击事件是创建一个新的VC并push。这样就导致push了多个相同的VC,点击返回pop的时候崩溃了。其实之前也遇到过push多个相同的VC的情况,但是大不了一级级的pop返回,也没见崩溃,但是这次崩溃了,log说是数组越界,而且是一个随机的巨大的数导致越界,没搞明白为什么。。。所以为了防止这种多次push相同VC的事情再发生,我想了个办法,在push之前先取出UINavigationController的栈顶VC,判断是否是同一个类的VC,不是那就创建并push,是就不push了!看代码:
其实逻辑很简单。所以我觉得如果语言本身能多一个Bool属性,控制能否允许相同类的VC多次push,默认NO,不允许。其实我觉得应该不会有出现要同时push多个相同类的VC的逻辑。但是我旁边的小伙伴说,没准就有这种变态的需求呢。。。
大家觉得我这个建议怎么样。欢迎广大程序猿回复看法,如果很多人都认同,没准苹果爸爸一高兴就采纳了呢,虽然也不是什么大的优化!!