IOS 单例模式
提起设计模式,总让人感觉讳莫如深。其实设计模式就是在特定场景下对特定问题的解决方案。除了软件设计,设计模式同样也适用于其他方面,例如UI设计和建筑设计。设计模式大都来源于GoF的23中设计模式。IOS开发中的设计模式同样也是从这里面变化而来的。今天我们来说说单例模式。
这个设计模式作用就是解决“应用中只有一个实例”的问题。
具体的应用有:UIApplication UIAccelerometer NSUserDefault NSFileManager等等。当我们的应用程序启动的时候,应用的状态是由UIApplication类的一个实例维护的(Delegate),实现了应用中一些共享资源的访问和状态的保持。
单例模式一般会封装一个静态属性和方法。
实现参考代码
//头文件
@interface Singleton : NSObject
+ (Singleton *) sharedManager;
@property(nonatomic,strong) NSString *singletonData;
@end
//.m
@implementation Singleton
static Singleton * sharedSingleton = nil;
@synthesize singleData
static Singleton *sharedManager = nil;
+(Singleton *) sharedManager
{
static dispatch_once_t once;
dispatch_once(&once,^{sharedManager = [[self alloc] init];
});
return sharedManager;
}
@end
其中类方法采用了GCD(C语言多线程访问技术)技术,dispatch_once_t是GCD提供的结构体。使用时要将once的地址传递给dispatch_once函数,该函数能够记录该代码块是否被调用过。同时这个函数保证了线程同步,加了锁。
单例模式的使用情景很多,比方说在使用观察者模式开发时,需要一个manager去管理observer,所以这个管理者可以使用单例模式,里面的变量也可以放在dispatch_once函数中。
下一节我们继续介绍ios设计模式之委托模式。

浙公网安备 33010602011771号