创建安全的单例
1 #import "Singleton.h" 2 3 @implementation Singleton 4 static Singleton* _instance = nil; 5 +(instancetype) shareInstance 6 { 7 static dispatch_once_t onceToken ; 8 dispatch_once(&onceToken, ^{ 9 _instance = [[super allocWithZone:NULL] init] ; 10 }) ; 11 return _instance ; 12 } 13 14 +(id) allocWithZone:(struct _NSZone *)zone 15 { 16 return [Singleton shareInstance] ; 17 } 18 19 -(id) copyWithZone:(struct _NSZone *)zone 20 { 21 return [Singleton shareInstance] ; 22 } 23 @end