单例


//PerfectSingleton.h

#import@interface PerfectSingleton : NSObject

+ (instancetype)Shareinstance;

@end


// PerfectSingleton.m

#import "PerfectSingleton.h"

PerfectSingleton *manager = nil;

@implementation PerfectSingleton

+ (instancetype)Shareinstance{

    if(!manager){

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            manager = [PerfectSingleton new];

        });

    }

    return manager;

}

// 防止使用alloc开辟空间

+ (instancetype)allocWithZone:(struct _NSZone *)zone{

    if(!manager){

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            manager = [super allocWithZone:zone];

        });

    }

    return manager;

}

// 防止copy

+ (id)copyWithZone:(struct _NSZone *)zone{

    if(!manager){

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            manager = [super copyWithZone:zone];

        });

    }

    return manager;

}

// 使用同步锁保证init创建唯一单例 ( 与once效果相同 )

- (instancetype)init{

    @synchronized(self) {

        self = [super init];

    }

    return self;

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 什么是单例模式? 单例模式想一个大独裁者,他规定在他的国度里面,所有数据的访问和请求都得经过他,甚至你要...
    GitHubPorter阅读 4,884评论 0 4
  • 一. ARC环境下的单例模式 单例模式的基本概念单例, 顾名思义, 即在整个程序中, 某一个类只有唯一一个实例, ...
    面糊阅读 4,079评论 0 50
  • 单例模式的作用 可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问 从而方便地控制了实例个数,并...
    JonesCxy阅读 2,900评论 0 0
  • 第二天白楠一早就去通明殿报到,留了封信给马齐。安排他这些日子需要参加的课程,和日常做的修习,马齐看完信,叹了口气,...
    公子旷阅读 3,142评论 0 3
  • 大家好,我是何庆源。曾经也是一名爱搞事的程序员,但没坚持住,改行开了家印刷公司,成为了一名私营业主。做了生...
    何庆源_3672阅读 1,365评论 2 0