美文网首页
iOS 单例销毁重建

iOS 单例销毁重建

作者: ShanJiJi | 来源:发表于2017-09-07 16:32 被阅读528次

在iOS中,单例模式是比较常用的一种模式,保证相关代码只会执行一次,但有时候会有一种场景,需要销毁单例进行重建。

如果不采用GCD提供的dispatch_once方法,需要加锁操作,是比较耗性能的。

那么这个时候如何继续采用dispatch_once方法?

dispatch_once_t的描述是:

typedef long dispatch_once_t;

dispatch_once在判断是否需要执行的关键语句:

if(DISPATCH_EXPECT(*predicate, ~0l) != ~0l) {

dispatch_once_f(predicate, context, function);

}

可以了解到 dispatch_once_t参数的初始值就是0l,只需要重置dispatch_once_t参数及实例参数,具体代码如下:

static SpTest *sInstance = nil;

static dispatch_once_t onceToken;

+ (instancetype)sharedManager

{

  dispatch_once(&onceToken, ^{

    sInstance= [[self alloc] init];;

    NSLog(@"dispatch once");

});

  return sInstance;

}

+ (void)tearDown{

  sInstance=nil;

  onceToken=0l;

}

回过头来想想,其实这样实现是一种比较粗陋的方式,需要考虑在销毁的同时实例的使用状况等,其实是违背dispatch_once使用的初衷的。

不排除真的有这种单例需要销毁的场景,但多数需要销毁的单例实际上可能不适用于单例这种模式,可能需要重新考虑架构设计问题。

作者:HappyCoco
链接:http://www.jianshu.com/p/82ba1af6bbdc

相关文章

  • iOS 单例销毁重建

    在iOS中,单例模式是比较常用的一种模式,保证相关代码只会执行一次,但有时候会有一种场景,需要销毁单例进行重建。 ...

  • iOS中的单例模式如何销毁重建

    在iOS中,单例模式是比较常用的一种模式,保证相关代码只会执行一次,但有时候会有一种场景,需要销毁单例进行重建。 ...

  • iOS中的单例模式如何销毁重建

    在iOS中,单例模式是比较常用的一种模式,保证相关代码只会执行一次,但有时候会有一种场景,需要销毁单例进行重建。如...

  • OC:单例销毁与重建

    dispatch_once在判断是否需要执行的关键语句: 可以了解到 dispatch_once_t参数的初始值就...

  • iOS单例的创建与销毁

    c#iOS单例的创建与销毁 单例:单例模式使一个类只有一个实例.单例是在使用过程,保证全局有唯一的一个实例.这样,...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • 8. 单例

    单例 1、GCD方式创建单例 2、互斥锁方式 销毁

  • iOS 单例模式 - 单例对象销毁【GCD】

    单例对象的创建方式 单例.h 文件的实现 单例的.m 文件的实现 单例对象的销毁【GCD创建的方式】 使用单例对象...

  • iOS 单例模式 - 单例对象销毁【@synchronized】

    单例对象的创建方式 单例.h 文件的实现 单例.m 文件的实现 单例对象的销毁【@synchronized创建方式...

  • iOS 单例实现与销毁

    前言 单例,我们开发中使用很频繁的一种设计,你有没有想过, 为什么其会在app生命周期中只执行一次? 系统底层做了...

网友评论

      本文标题:iOS 单例销毁重建

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