首页 > 代码库 > 设计模式之单例
设计模式之单例
无论一个应用请求多少次,单例类都只会返回一个相同的实例。
NSFileManager
, NSWorkspace
, 并且, 在 UIKit中, UIApplication
和 UIAccelerometer
.sharedFileManager
, sharedColorPanel
, and sharedWorkspace
.方法一(不推荐):
static AccountManager *DefaultManager = nil;
+ (AccountManager *)defaultManager {
if (!DefaultManager)
DefaultManager = [[self allocWithZone:NULL] init];
return DefaultManager;
}
方法二:
+ (AccountManager *)sharedManager {
static AccountManager *sharedAccountManagerInstance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
sharedAccountManagerInstance = [[self alloc] init];
});
return sharedAccountManagerInstance;
}
方法二优点:
1. 保证线程安全。
2. 满足静态分析器的要求。
3. 兼容ARC
扩展:
关于 dispatch_once:
在整个程序的声明周期中,仅执行一次某一个block对象。
其他有需要只执行一次的操作也可以放到dispatch_once中执行。
注意:dispatch_once_t *predicate对象(用作断言的指针)必须是全局或者静态对象
设计模式之单例