现在先来看看例子:
//Singleton.h @interface Singleton : NSObject + (Singleton*)sharedManager; @property (nonatomic ,strong) NSString* singletonData; @end
//Singleton.m #import "Singleton.h" @implementation Singleton @synthesize singletonData = _singletonData; static Singleton *sharedManager = nil; + (Singleton*)sharedManager { static dispatch_once_t once; dispatch_once(&once, ^{ sharedManager = [[self alloc] init]; }); return sharedManager; } @end
在例子中,dispath_once_t是有GCD(Grand central Dispatch)提供,使在整个生命周期中,包含在内的代码块只执行一次,dispath_once会记录是否代码已经被执行过
下面是可在Cocoa Touch中参考的一些单列模式的类:
- UIApplication
- UIAccelerometer
- NSUserDefaults
- NSNotificationCenter