在讲单例之前先简单说明一个概念:“线程安全”。
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
在我们的程序中一定要注意线程安全的问题。
下面开始正题:
一、标准写法
这是一种很标准的Singleton实现,中规中矩。不过这种实现并不是线程安全的。
/* Singleton.h */
#import <Foundation/Foundation.h>
@interface Singleton : NSObject
+ (Singleton *)instance;
@end
/* Singleton.m */
#import "Singleton.h"
static Singleton *instance = nil;