第一种:
{
static Sun * sun = nil;
if(sun == nil){
sun = [[Sun alloc] init];
}
return sun;
}
第二种:
{
static Sun * sun = nil;
static dispatch_once onceToken = nil;
dispatch_once_t(&&onceToken, ^[
sun =[[Sun alloc] init];
]);
}
第三种:
{
static Sun * sun = nil;
@synchronized(self){
if(sun == nil){
sun = [[Sun alloc] init];
}
}
return sun;
}