单例大家并不陌生,我们经常会用到的一个系统的单例对象那就是
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
他就是一个单例,那我们平时要怎么创建单例对象呢?
HttpRequst 为本类的类名
第一种:
+ (HttpRequst *)sharedManager {
static HttpRequst *httpRequst = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
httpRequst = [[self alloc] init];
});
return httpRequst;
}
该写法具有以下几个特性:
1. 线程安全。
2. 满足静态分析器的要求。
3. 兼容了ARC
第二种:
static HttpRequst *DefaultManager = nil;
+ (HttpRequst *)defaultManager {
if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init];
return DefaultManager;
}
以上两种方法都可以实现单例对象的创建
但是个人建议使用第一种