标签:
单例模式 是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。在iOS开发中,单例模式是非常有用的一种设计模式。
可以保证在程序运行过程,一个类只有一个实例
实现单例模式有三个条件:
针对于这三个条件,OC中都是可以做到的
应用场景
注意点
单例模式:
ARC环境下
在.h文件中
@interface XMGTools : NSObject<NSCopying,NSMutableCopying>
//提供类方法
/*
01 表明身份,表明这是一个单例
02 注意点:命名规范:share+类名|default+类名|share|类名
*/
+(instancetype)shareTools;
@end
在.m文件中
@implementation XMGTools
static XMGTools *_instance;
//重写该方法,保证永远都只分配一次空间
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
// @synchronized(self) {
// if (_instance == nil) {
// _instance = [super allocWithZone:zone];
// }
// }
//只会执行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}
+(instancetype)shareTools
{
return [[self alloc]init];
}
-(id)copyWithZone:(NSZone *)zone
{
return _instance;
}
-(id)mutableCopyWithZone:(NSZone *)zone
{
return _instance;
}
在非ARC的环境下,需要再加上下面的方法:
- (oneway void)release { }
- (id)retain { return self; }
- (NSUInteger)retainCount { return 1;}
- (id)autorelease { return self;}
#if __has_feature(objc_arc)
//ARC环境
#else
//MRC环境
#endif
标签:
原文地址:http://www.cnblogs.com/wxdonly/p/5097511.html