滥用单例造成的bug
2019-05-09 本文已影响65人
小冰山口
今天不聊技术, 讲一点工作上的小事情
我们项目里面大部分是用的自定义的NavigationBar
, 然后我们会在ViewController
的viewWillAppear:
方法里面去设置隐藏NavigationBar
:
[self.navigationController setNavigationBarHidden:YES animated:animated];
然后将自定义的NavigationBar
添加在view
上. 基本思路就是这样. 今天的重点也不在这里.
![](https://img.haomeiwen.com/i2868984/8638aecfa0280304.png)
这个是自定义的titleView
也是添加在自定义的NavigationBar
上的. 当切换港股
和模拟
这两个按钮的时候, 其实是两个控制器之间的切换, 这两个控制器又分别添加了不同的自定义的NavigationBar
, 但是后来我就发现, 当切换的时候, titleView
莫名其妙地不见了.
于是我打印了自定义的NavigationBar
的subviews
, 发现titleView
不在数组里了, 我在想, 这特么啥时候给remove
掉了.
于是我就往根源上寻找, 我发现这么一行代码:
[TradeViewMainViewController shareMainTradeVC].navTitleView
这个titleView
是单例的属性, 那么它在内存中也只有一份, 这就造成了, 当你切换控制器的时候, 这个titleView
已经又被别的navigationBar
持有了, 这时候当然就会从之前的navigationBar
中移除了. 为了解决这个问题, 我只能在每次viewWillAppear:
方法里去添加自定义的NavigationBar
.