美文网首页
iOS单例模版(OC&Swift)

iOS单例模版(OC&Swift)

作者: seasonZhu | 来源:发表于2020-06-29 13:52 被阅读0次

单例模版

OC


@interface XQSingleton : NSObject

+ (instancetype)shareInstance;

@end

@implementation XQSingleton

+ (instancetype)shareInstance{
    static XQSingleton *shareInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        shareInstance = [[super allocWithZone:NULL] init];
    });
    return shareInstance;
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone{
    return [self shareInstance];
}

- (id)copy{
    return self;
}

- (id)mutableCopy{
    return self;
}

以上代码有以下几点一一展开说:

在XQSingleton的@interface中声明shareInstance接口,提供给外部调用返回单例对象。

在类实现中shareInstance使用static XQSingleton *shareInstance,这种静态局部对象是为了保持返回对象的唯一性。

使用GCD的dispatch_once函数确保该对象的初始化方法只执行一次,保证了线程安全。

初始化使用[super allocWithZone:NULL]是为了重载当前类的allocWithZone方法,只能使用父类的对象分配方法来创建对象。

重载allocWithZone方法是为了防止外部调用alloc创建出另外一个新的XQSingleton对象。

重载copy和mutableCopy方法时为了防止外部调用copy或者mutableCopy方法时,生成新的对象。

Swift版本

final class Singleton {
    private init() {}

    static let shared = Singleton()
}

final保证类不能被继承,避免可以子类化,进而进行改写.

初始化方法private,保证无法被调用,这样就保证了对象的唯一性.

可以看到,Swift的单例比OC的简洁安全不少

相关文章

  • iOS单例模版(OC&Swift)

    单例模版 OC 以上代码有以下几点一一展开说: 在XQSingleton的@interface中声明shareIn...

  • 单例

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

  • iOS 单例模式

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

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

  • iOS 单例模式 or NSUserDefaults

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

  • 单例模式 Singleton Pattern

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

  • 【设计模式】单例模式

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

  • iOS单例宏的使用

    关于iOS单例,iOS单例详解请看这篇文章http://www.jianshu.com/p/ba30a063fce...

  • iOS单例模式容错处理

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

网友评论

      本文标题:iOS单例模版(OC&Swift)

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