http://cocoa.venj.me/blog/singleton-in-objc/
@interface SomeManager : NSObject
+ (id)sharedManager;
@end
/* 非线程安全的实现 */
@implementation SomeManager
+ (id)sharedManager {
static id sharedManager = nil;
if (sharedManager == nil) {
sharedManager = [[self alloc] init];
}
return sharedManager;
}
@end
/* 线程安全的实现 */
@implementation SomeManager
static id sharedManager = nil;
+ (void)initialize {
if (self == [SomeManager class]) {
sharedManager = [[self alloc] init];
}
}
+ (id)sharedManager {
return sharedManager;
}
@end
注意: +initialize这个函数,这个函数是class的函数,在任意初始化之前,只会调用一次,所以这个函数特别适合做singlton。