美文网首页iOS开发知识小集
滥用单例造成的bug

滥用单例造成的bug

作者: 小冰山口 | 来源:发表于2019-05-09 23:42 被阅读65次
今天不聊技术, 讲一点工作上的小事情

我们项目里面大部分是用的自定义的NavigationBar, 然后我们会在ViewControllerviewWillAppear:方法里面去设置隐藏NavigationBar:

[self.navigationController setNavigationBarHidden:YES animated:animated];

然后将自定义的NavigationBar添加在view上. 基本思路就是这样. 今天的重点也不在这里.

titleView

这个是自定义的titleView也是添加在自定义的NavigationBar上的. 当切换港股模拟这两个按钮的时候, 其实是两个控制器之间的切换, 这两个控制器又分别添加了不同的自定义的NavigationBar, 但是后来我就发现, 当切换的时候, titleView莫名其妙地不见了.

于是我打印了自定义的NavigationBarsubviews, 发现titleView不在数组里了, 我在想, 这特么啥时候给remove掉了.

于是我就往根源上寻找, 我发现这么一行代码:

 [TradeViewMainViewController shareMainTradeVC].navTitleView

这个titleView是单例的属性, 那么它在内存中也只有一份, 这就造成了, 当你切换控制器的时候, 这个titleView已经又被别的navigationBar持有了, 这时候当然就会从之前的navigationBar中移除了. 为了解决这个问题, 我只能在每次viewWillAppear:方法里去添加自定义的NavigationBar.

只是一点自己的小思考. 总结一下

相关文章

  • 滥用单例造成的bug

    今天不聊技术, 讲一点工作上的小事情 我们项目里面大部分是用的自定义的NavigationBar, 然后我们会在V...

  • 架构(避免滥用单例)

    blog 避免滥用单例(破土君)名词:依赖注入

  • 避免单例滥用

    1、单例应该只用来保存全局的状态,并且不能和任何作用域绑定。如果这些状态的作用域比一个完整的应用程序的生命周期要短...

  • 滥用单例的影响

    单例是整个 Cocoa 中被广泛使用的核心设计模式之一。事实上,苹果开发者库把单例作为 "Cocoa 核心竞争力"...

  • objc:Issue13——Architecture【2】

    避免单例滥用——by Stephen Poletto 单例是整个Cocoa使用的核心设计模式之一。事实上,苹果的开...

  • 单例滥用 - dispatch_once死锁造成crash(di

    起因 这周开发过程中遇到一个奇怪的现象,即在某个页面一直卡住停留,造成卡死。而又没有立即崩溃,等待一会儿后cras...

  • 设计模式笔记及Swift上的实现之五『SINGLETON(单例)

    单例是书中最后一个创建型模式。单例这个设计模式相信大家再熟悉不过了。但单例也是最容易被滥用的设计模式。我们可以通过...

  • 滥用单例dispatch_once而造成的死锁问题

    在开发中使用单例是最经常不过的事儿了,最常用的就是dispatch_once这个函数,这个函数可以使其参数内的bl...

  • 避免滥用单例模式

    [翻译]本文翻译自objc.io官网的博客, 原文可查看Avoiding Singleton Abuse。 ———...

  • iOS避免滥用单例

    单例模式: 类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问。 这个唯一的实例只能通过子类化进行扩展,...

网友评论

    本文标题:滥用单例造成的bug

    本文链接:https://www.haomeiwen.com/subject/didnoqtx.html