首页 > 其他 > 详细

GCD实现简单的单例类-Singletion

时间:2016-01-26 21:35:33      阅读:251      评论:0      收藏:0      [点我收藏+]

什么是单例模式

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

技术分享

 

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

 

 

3.简单GCD单例类的实现

#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;
}
@end


//*******************************************
#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实现简单的单例类-Singletion

原文:http://www.cnblogs.com/i-o-s/p/5161588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!