首页 > 其他分享 >怎么销毁单例

怎么销毁单例

时间:2023-07-12 10:33:39浏览次数:29  
标签:怎么 sharedInstance alloc 销毁 self allocWithZone 调用 单例

static NGUser *sharedInstance = nil;
static dispatch_once_t onceToken;
+ (instancetype)sharedInstance{
  
  dispatch_once(&onceToken, ^{
      //调用父类的allocWithZone,不能使用self,避免循环引用
      sharedInstance = [[super allocWithZone:NULL] init];
  });
  return sharedInstance;
}

//必须要实现的,当我们创建一个对象,alloc会给对象分配内存,init初始化数据
//alloc会调用allocWithZone,如果创建对象没有使用sharedInstance,而是使用alloc
//那么alloc就会调用allocWithZone,重写类方法,调用sharedInstance使得alloc时创建的也是单例对象
+(instancetype)allocWithZone:(struct _NSZone *)zone{
  return [self sharedInstance];
}

//单例对象被copy
-(id)copyWithZone:(nullable NSZone *)zone{
  return self;
}
+(void)attempDealloc{
  onceToken = 0; // 只有置成0,GCD才会认为它从未执行过.它默认为0.这样才能保证下次再次调用shareInstance的时候,再次创建对象.
  sharedInstance = nil;
}

 

标签:怎么,sharedInstance,alloc,销毁,self,allocWithZone,调用,单例
From: https://www.cnblogs.com/huangzs/p/17546871.html

相关文章

  • ASEMI整流桥KBU808参数,KBU808怎么判断好坏?
    编辑-ZKBU808是一种常用的整流桥,常用于电源和电机控制电路中。了解KBU808的参数和判断其好坏的方法对于电子工程师和电路设计师来说非常重要。 首先,让我们来了解一下KBU808的参数。KBU808是一种单相全波整流桥,具有以下主要参数: 1.最大正向电流(MaximumForwardCurrent):这是......
  • InnoDB自增原理都搞不清楚,还怎么CRUD?
    虽然我们习惯于给主键ID指定AUTO_INCREMENT属性,但是AUTO_INCREMENT也是可以指定到非主键字段的,唯一的约束就是这个字段上面得加索引,有了索引,就可以通过类似SELECTMAX(*ai_col*)的语句快速读到这列数据的最大值。本文要探讨的话题是MySql的InnoDB引擎处理自增数据列的原理MySql5.1......
  • 胸片和CT断层图像是怎么来的?
    如何得到CT断层图像?相信小伙伴体检的时候都拍过胸片,假如哪个不幸的小伙伴胸片有点“小问题”的话呢,还要再拍个CT图像让医生仔细看一下,那么这些图像有什么区别呢?又是如何得到的呢?今天我给大家简单介绍一下。首先,胸片和CT图像长什么样子呢?左图是我们平常所说的胸片,右边就是CT的断层图......
  • 一篇文章看懂 Apipost IDEA插件怎么用
    Apipost最近也是推出了IDEA插件,只需要右键upload一下即可自动解析代码注解并快速生成API文档,小编也是试了试,这篇文章给大家带来详细的使用教程。安装ApipostHelper安装Apipost-Helper:打开IDEA,在右侧Plugin中搜索Apipost点击Install下载安装。配置方法:安装成功后要将IDEA内的......
  • 面试官:使用 RocketMQ 怎么进行灰度发布?
    今天来聊一聊RocketMQ的灰度方案。灰度发布是指在黑与白之间,平滑过渡的一种发布方式。在大流量的系统中,如果一次升级改造范围比较大,或者影响内容不太确定,一般会采用切量的方式进行升级,这样可以减少生产变更带来的影响。如上图,对ServiceA这个服务进行升级,采用灰度发布,先升级Ser......
  • 镜像的在节点上的存储结构是怎么样的?
    每日一问系列镜像的在节点上的存储结构是怎么样的?我们经常会使用docker或者其他cri工具拉取镜像来运行容器,却没有去实际了解pull下来的镜像在机器上是怎么存储的。以下以常用的overlay2存储驱动为例,解析镜像的存储结构,其他存储驱动也是类似编写如下Dockerfile文件......
  • 监控系统自监控怎么做?
    问题监控系统用于监控其他的系统、基础设施,绝对是P0级的服务,那监控系统的自监控应该怎么做呢?如果自己监控自己,有些组件挂掉了难免循环依赖,如果单独搞一套新的监控系统来监控当前服役的监控系统,又搞得有些过于复杂。本文我们来探讨一下监控系统的自监控应该怎么做。解决方案:自......
  • 明明是张表格脸,怎么也长出了图片?(Excel批量处理图片合集)
    图片来源为函数类:Excel批量插入图片制图片的下拉选项图片就是图片类:批量插入图片把图片用在了数据透视表里只要是单元格对象的图片,不问出处:当函数遇上图片......
  • jQuery 需要判断很多怎么写比较好 这个问题怎么解决?
    项目方案:优化jQuery大量判断的实现项目背景在现代web开发中,jQuery是一个广泛使用的JavaScript库,它提供了简洁高效的API来操作HTML文档、处理事件、执行动画等。然而,当我们需要进行大量判断操作时,jQuery的代码可能会变得冗长和难以维护。本项目的目标是提出一种优化......
  • C# 怎么把空值转换为0
    原文链接:https://www.zzzyk.com/show/21a0aaa76b88192e.htm空值直接转换为int会报错,所以需要转换下,原文看起来比较乱,在此整理下:第一种:if((string.isnullorempty(this.textbox1.value)){      this.textbox1.value="0";} 第二种:int n = 0;int.TryParse(this.textBox......