常用写法
+(JYLion*)defaultLion
{
static JYLion *lion = nil;
if (lion == nil) {
//只有在第一次调用的时候创建对象
lion = [[JYLion alloc] init];
}
return lion;
}
GCD创建单例
//单例对象。
+(MyUrlSession *)defaultSession{
static MyUrlSession * session=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
session=[[MyUrlSession alloc]init];
});
return session;
}
非标准单例
static file *instance = nil;
@implementation file
// 获得单例的方法
@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其 它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。
+ (id)shareInstance {
@synchronized(self) {
if (instance == nil) {
instance = [[file alloc] init];
}
}
return instance;
}
简单创建单例
最新推荐文章于 2019-05-11 14:31:37 发布