星空网 > 软件开发 > 操作系统

GCD实现简单的单例类

什么是单例模式

单例模式是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。在 iOS 开发中,单例模式是非常有用的一种设计模式。如 下图,是一个简单单例模式的 UML 类图。

GCD实现简单的单例类images/loading.gif' data-original="http://images2015.cnblogs.com/blog/886976/201601/886976-20160126205334160-1710671255.png" />

 



iOS SDK 中也有许多类使用了单例模式,例如,UIApplication:当程序启动的 时候,会调用 UIApplicationMain 方法,在该方法中,会实例化一个 UIApplication 对象,之后在程序中的任意地方调用 sharedApplication 方法都将返回一个与当前应用程序相关的 UIApplication 实例(UIApplicationMain 方法中创建的 UIApplication 单例)。 

#import "DMSingletion.h"
static DMSingletion *_dmSingletion = nil;
@implementation DMSingletion

+(id)sharedDmSingletion
{

    if (_dmSingletion == nil) {
        
         static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _dmSingletion=[[DMSingletion alloc] init];
            
        });
        
    }

    return _dmSingletion;
    
}

//重写alloc 方法 即便是使用alloc 的方法 也该方法只执行一次
+(instancetype)alloc
{
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
       
        _dmSingletion = [super alloc];
    });

    return _dmSingletion;
}

#import "ViewController.h"
#import "DMSingletion.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self textGCDSingletion];
    
    [self textGCDRewWriteAlloc];
}

-(void)textGCDSingletion
{
    //创建第一个对象
    DMSingletion *firstObject = [DMSingletion sharedDmSingletion];
    //创建第二个对象
    DMSingletion *secondObject = [DMSingletion sharedDmSingletion];
    
    NSLog(@"\nfirstObject:%@\nsecondObject:%@",firstObject,secondObject);
}

-(void)textGCDRewWriteAlloc
{
    //创建一个对象
    DMSingletion *firstObject = [DMSingletion sharedDmSingletion];
    
    DMSingletion *secondObject = [[DMSingletion alloc] init];
    
    NSLog(@"\nfirstObject:%@\nsecondObject:%@",firstObject,secondObject);
  
}
@end

 

 

 

 








原标题:GCD实现简单的单例类

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

硬脱欧:https://www.goluckyvip.com/tag/14641.html
销售假货卖家:https://www.goluckyvip.com/tag/14642.html
美股重挫:https://www.goluckyvip.com/tag/14644.html
外贸汇率:https://www.goluckyvip.com/tag/14645.html
华贸物流:https://www.goluckyvip.com/tag/14646.html
海外专属店:https://www.goluckyvip.com/tag/14647.html
泰国签证有出生地 泰国出生入籍护照:https://www.vstour.cn/a/411245.html
宠物梳专利查询分析:https://www.kjdsnews.com/a/1842293.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流