凡凡的专栏

iOS-单例模式

何为单例模式,就是说如果在一个应用程序中,如果你想让一个类的实例使用的都是同一个,这时你就把该类设置为单例模式,iOS基础框架中有很多的单例模式类,如NSUserDefault,NSNotificationCenter等都是单例模式的设计。

单例模式的设计准则:

1.通过类方法获取单例实例,,

2.必须是原子性的,保证多线程的访问安全

3.定义一个静态的指针变量,它会一直存在整个应用程序的生命周期中,一旦被初始化就会一直指向第一次创建的实例。

头文件:

#import <Foundation/Foundation.h>@interface SingleInstance : NSObject+(SingleInstance *)sharedObject;@end实现文件:

#import "SingleInstance.h"//声明一个静态的SingleInstance对象指针,这个指针是静态的,所以会一直存在应用程序的整个生命周期中static SingleInstance *_shareObject = nil;@implementation SingleInstance+(SingleInstance *)sharedObject{@synchronized(self) {if (_shareObject == nil)//保证静态_shareObject指针只被初始化一次_shareObject = [[self alloc] init];}// GCD模式// static dispatch_once_t onceToken;// dispatch_once(&onceToken, ^{//_shareObject = [[self alloc] init];// });return _shareObject;}-(id)init{self = [super init];if (self) {//单例的成员变量的初始化工作}return self;}@end使用及结果:

for (int i= 0; i<5; i++) {NSLog(@"第%d次输出singleInstance = %@",i,[SingleInstance sharedObject]);}

2015-04-02 20:22:30.692 single[644:15707]

2015-04-02 20:22:30.693 single[644:15707]

2015-04-02 20:22:30.693 single[644:15707]

2015-04-02 20:22:30.693 single[644:15707]

2015-04-02 20:22:30.693 single[644:15707]

昨晚多几分钟的准备,今天少几小时的麻烦。

凡凡的专栏

相关文章:

你感兴趣的文章:

标签云: