美文网首页
[iOS] 安全唯一的单例模式

[iOS] 安全唯一的单例模式

作者: 流火绯瞳 | 来源:发表于2016-10-10 09:50 被阅读6560次

Swift

swift 3.0中废弃了dispatch_once,这里只记录一个标准的单例写法,具体相关的内容,可以看看这篇文章;

Swift 3.0 单例写法

代码:

import UIKit

class SingleOnce {

    // 单例
    static let shared = SingleOnce.init()
    private init(){}
    
    // 其他方法
    
    
}

这里将init方法私有化了,这样在其他地方就无法init,保证了单例的唯一性.

PS: 如果继承自其他类,init方法要加override关键字

使用:

使用单例

如果,在外部调用init方法,会编译报错:

无法外部初始化

Objective-C

在OC中, 我们可以这样写:

+ (instancetype)once {
    
    return [[self alloc] init];
    
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    
    static dispatch_once_t onceToken;
    static LQOnce *__once;
    dispatch_once(&onceToken, ^{
        __once = [[super allocWithZone:NULL]init];
    });
    
    return __once;
}

这样, 我们在使用的时候, 无论是调用once 方法, 还是init方法, 都会得到同一个实例对象:

LQOnce *once1 = [LQOnce once];
NSLog(@"%@", once1);
    
LQOnce*once2 = [[LQOnce alloc]init];
NSLog(@"%@", once2);

输出:

<LQOnce: 0x60400000cf60>
<LQOnce: 0x60400000cf60>

相关文章

  • 单例

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

  • iOS 单例模式

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

  • [iOS] 安全唯一的单例模式

    Swift swift 3.0中废弃了dispatch_once,这里只记录一个标准的单例写法,具体相关的内容,可...

  • 单例

    iOS单例模式 什么是单例模式? 单例模式:保证一个类仅有一个实例,并提供一个唯一的全局访问点。 苹果大量使用了此...

  • iOS 单例模式 or NSUserDefaults

    本文内容:iOS的单例模式NSUserDefaults的使用总结:iOS单例模式 and NSUserDefaul...

  • iOS单例模式

    单例模式是在iOS开发中常用的开发模式之一,使用单例模式是为了保证在整个程序中,所定义的属性值是唯一的 之前对于单...

  • 单例模式 Singleton Pattern

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

  • 单例模式(singleton)

    转载 确保对象的唯一性——单例模式 (一)确保对象的唯一性——单例模式 (二)确保对象的唯一性——单例模式 (三)...

  • 设计模式

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

  • 【设计模式】单例模式

    学习文章 iOS设计模式 - 单例 SwiftSingleton 原理图 说明 单例模式人人用过,严格的单例模式很...

网友评论

      本文标题:[iOS] 安全唯一的单例模式

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