单例 (补充) 创建单例的三种方式
XX . h 文件中 添加初始化方法
例如: +(Pen *)sharedPen;
XX . m 文件中实现方法
第一种:
+ (Pen *)sharedPen
{
static Pen * pen = nil;
if (pen == nil) {
pen = [[Pen alloc]init];
}
return pen;
} 错误的
第二种:
+(Pen *)sharedPen
{
static Pen * pen = nil;
@synchronized(self)
{
if (pen == nil) {
pen = [[Pen alloc]init];
}
}
return pen;
}
不方便
第三种:
+(Pen *)sharedPen
{
static Pen * pen = nil;
//保证里面的方法 只执行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
pen = [[[Pen alloc]init] autorelease];
});
return pen;
}
效率高 , 建议使用
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。