美文网首页
iOS严谨一些的单例写法

iOS严谨一些的单例写法

作者: _乱 | 来源:发表于2018-03-01 17:31 被阅读0次

常规不遵从NSCopying代理,不重写allocWithZone方法会导致用[class allow]init]写法和单例创建方法创建两个地址不相同的对象,无法做到实例的唯一性。写单例是需要重写allocWithZone方法保证用allocinit方法创建时实例的唯一性。

.h

#import <Foundation/Foundation.h>

@interface Singleton :NSObject<NSCopying>

+(instancetype)sharedInstance;

@end

.m

#import "Singleton.h"

static Singleton *_instance = nil;

@implementation Singleton

+(instancetype)sharedInstance

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instance = [[self alloc]init];

    });

    return _instance;

}

+(id)allocWithZone:(struct _NSZone *)zone

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instance = [super allocWithZone:zone];

    });

    return _instance;

}

- (id)copyWithZone:(NSZone *)zone

{

    return _instance;

}

@end

相关文章

  • iOS严谨一些的单例写法

    常规不遵从NSCopying代理,不重写allocWithZone方法会导致用[class allow]init]...

  • iOS 单例模式

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

  • 严谨的单例写法

    把一个类单例化,需要保证在整个进程生命周期内,这个类最多只存在一个实例。有几点需要考虑: 保证多线程下只为此类分配...

  • 单例的严谨写法

    转载自http://www.jianshu.com/p/85618bcd4fee?utm_source=tuico...

  • iOS之手写单例

    一 不严谨写法 先附上不严谨的创建单例的写法 SignalModel.h SignalModel.m 外界使用 打...

  • 单例的2种写法

    单例模式是iOS开发中最常用的设计模式,iOS的单例模式有两种官方写法,如下: 1,常用写法 import "Se...

  • 单例类的严谨写法

    单例类的简单实现 .h文件 .m文件 这样就创建了一个用户单例类,但是这样做的不严谨处在于,如果用户非要用[[Us...

  • iOS-两种单例模式的实现

    单例模式是开发中最常用的写法之一,创建一个单例很多办法,iOS的单例模式有两种官方写法,如下: 不使用GCD 某些...

  • ios~单例模式:

    在iOS OC中,一般我们都是用官方推荐的写法来写单例:GCD方式单例 分析单例 static SharedPer...

  • 24.单例的严谨写法

网友评论

      本文标题:iOS严谨一些的单例写法

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