美文网首页
单例模式的安全创建法

单例模式的安全创建法

作者: 敌敌味丶 | 来源:发表于2018-05-02 21:34 被阅读0次

单例外部环境不可控,内部可控。所有要保证单例唯一,就只有在其.m内实现。

使用情景

高频率去生产一个对象,然后又释放。让多个不相关的类共享数据。

创建单例

.h

//
//  SafeSingleton.h
//  OC基础
//
//  Created by FYJMac on 2018/5/2.
//  Copyright © 2018年 FYJMac. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface SafeSingleton : NSObject
//创建或获取单例对象
+ (instancetype)sharedSafeSingleton;
//注销单例对象
- (void)cancelShare;

@end

.m

//
//  SafeSingleton.m
//  OC基础
//
//  Created by FYJMac on 2018/5/2.
//  Copyright © 2018年 FYJMac. All rights reserved.
//

#import "SafeSingleton.h"

@implementation SafeSingleton

static SafeSingleton *singleton;

//load是第一次加载该类时触发(不管有没有调用);initialize时第一次使用该类时触发
+ (void)initialize
{
    [SafeSingleton sharedSafeSingleton];
}

+ (instancetype)sharedSafeSingleton
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        singleton = [[SafeSingleton alloc] init];
    });
    return singleton;
}

//防止被创建多个
+ (instancetype)alloc
{
    if (singleton) {
        //抛出一个异常,通常是在写框架的时候用到
        NSException *exception = [NSException exceptionWithName:@"NSInternalInconsistencyException" reason:@"There can only be one Singleton indtance." userInfo:nil];
        [exception raise];
    }
    return [super alloc];
}


- (void)cancelShare
{
    singleton = nil;
}

相关文章

  • 设计模式(2) 单例模式

    单例模式 线程安全的Singleton 会破坏Singleton的情况 线程级Singleton 单例模式是几个创...

  • 单例模式的安全创建法

    单例外部环境不可控,内部可控。所有要保证单例唯一,就只有在其.m内实现。 使用情景 高频率去生产一个对象,然后又释...

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • 设计模式之单例模式,每个人都是唯一

    单例模式 单例模式(SingletonPattern)是 Java中最简单的设计模式之一。这种类型的设计模式属于创...

  • 单例模式安全之反射攻击

    单例模式安全之反射攻击 源码 单例模式这里就不谈了,什么是单例模式可参考七种Java单例模式详解,这里是关于单例模...

  • Singleton 单例模式

    饿汉式单例模式 饿汉式单例模式 通过静态代码块增加异常处理 懒汉式单例模式 存在线程安全问题 懒汉式单例模式 解决...

  • Kotlin 的单例模式

    Kotlin 的单例模式 1. 在 Java 中的单例模式 懒汉式单例模式,并且是线程安全 2. 在 Kotlin...

  • 面试复习-设计模式

    一、单例模式 确保一个类只有一个实例,并提供一个全局访问点。 线程不安全的单例模式 懒汉式 线程安全的单例模式: ...

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

  • 单例模式的常用实现方式

    单例模式属于最常用的设计模式,Java中有很多实现单例模式的方式,各有其优缺点 实现方式对比 单例实现方式线程安全...

网友评论

      本文标题:单例模式的安全创建法

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