美文网首页
单例弊端

单例弊端

作者: C_HPY | 来源:发表于2019-03-19 17:00 被阅读0次

现公司的项目中很依赖单例,各种单例。
好多年的项目,无力改变现状,说几点单例的弊端吧
1、内存占用问题,众所周知,单利会一直占用内存,创建过多的单例,内存一直得不到释放。然而就实际使用情况来看,目前公司的项目在iPhone4s上面占用内存不过60多MB,在可接受范围内。这点不算最大的弊端
2、数据异常问题,一个单例可能多个地方使用,多个地方更改数据,多个地方有各种回调操作。这个情况稍不注意就有可能酿成大错。我认为这个问题是目前单例的最大弊端
3、线程问题,按照规范来自然不会因线程出现问题,也不容易出问题,凡事皆有例外,万一是个不守规则的愣头青呢。

暂时想到这么多弊端,欢迎补充。

鉴于项目中的单例真的太多,思考销毁单例的方法...有点傻.
假定创建单例方式

static Instance *_instance = nil;
static dispatch_once_t onceToken;

+ (instancetype)sharedManager
{
  dispatch_once(&onceToken, ^{
    _instance= [[self alloc] init];;
});
  return _instance;
}

那么销毁单例

+ (void)destroy{
  _instance=nil;
  onceToken=0l;
}

说明:dispatch_once_t参数的初始值就是0l,只需要重置dispatch_once_t参数及实例参数

通常情况下,一般都是工具类,数据类声明为单例,很少有ViewController声明为单例的,然而,我们突然有了这样的需求。
项目中最近集成了Flutter,flutter目前对iOS还不是很友好,框架内存泄漏,自身高度还不够,暂时无法解决内存泄漏的问题,每次进入flutter页面,然后退出flutter模块儿有60MB左右的泄漏.折中考虑,暂时用单例去创建vc...尴尬
问题就出在这个单例vc上,在iOS中,同一个实例vc,即内存地址完全相同的vc,不允许同时被push两次及以上,否则crash。所以如果你对vc是单例,也需要特殊处理

相关文章

  • 单例弊端

    现公司的项目中很依赖单例,各种单例。好多年的项目,无力改变现状,说几点单例的弊端吧1、内存占用问题,众所周知,单利...

  • 单例模式

    单例模式(饿汉式) 单例模式(懒汉式) 解决两种的弊端的单例模式(双锁)

  • 如何实现单例,单例的弊端

    单例在项目中是必不可少的,他可以使我们全局共享我们的数据。 首先,单例写法有好几种,通常的写法是基于线程安全的写法...

  • 这9个单例被破坏的事故现场,你遇到过几个?

    本文节选自《设计模式就该这样学》 1 通用单例写法带来的弊端 我们看到的单例模式通用写法,一般就是饿汉式单例的标准...

  • iOS 单例的使用

    最近几年在开发项目时,使用的单例比较多,因为它确实方便了我们的开发。但是很多文章都提到的单例的缺点和弊端,这可能会...

  • 单例

    在项目中我们经常会用到单例类,觉得很方便,但是其弊端也很明显:单例类的职责过重,在一定程度上违背了“单一职责原则”...

  • iOS面试题:单例的弊端

    原文:iOS面试题大全 优点:1:一个类只被实例化一次,提供了对唯一实例的受控访问。2:节省系统资源3:允许可变数...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • IOS单例模式的底层原理

    单例介绍 本文源码下载地址 1.什么是单例 说到单例首先要提到单例模式,因为单例模式是单例存在的目的 单例模式是一...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

网友评论

      本文标题:单例弊端

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