美文网首页iOS进阶之路一步步学习ios
iOS中的单例模式如何销毁重建

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

作者: HappyCoco | 来源:发表于2016-02-22 15:03 被阅读7115次

在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使用的初衷的。

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

相关文章

  • iOS 单例销毁重建

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

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

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

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

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

  • 单例模式 Singleton Pattern

    单例模式-菜鸟教程 iOS中的设计模式——单例(Singleton) iOS-单例模式写一次就够了 如何正确地写出...

  • iOS 单例模式

    关于单例模式的详解,看完这几篇,就完全了然了。iOS 单例模式iOS中的单例模式iOS单例的写法

  • 单例

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

  • iOS单例的创建与销毁

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

  • 单例的销毁

    单例设计模式是iOS开发中一种非常常用的设计模式,大家也都很熟悉了。这里要说的是单例的销毁。由于某些需求,比如某个...

  • 单例设计模式

    单例模式优点 单例模式在内存中只有一个实例,减少了内存开支。特别是一个对象需要频繁的创建、销毁时,而创建与销毁的性...

  • iOS单例模式容错处理

    ios 单例模式容错处理 1、单例模式的使用和问题解决 在ios开发的过程中,使用单例模式的场景非常多。系统也有很...

网友评论

本文标题:iOS中的单例模式如何销毁重建

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