什么是单例模式
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
原文:http://www.cnblogs.com/i-o-s/p/5161588.html