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;
}

效率高 , 建议使用