OC 单例模式
2016-05-30 08:43
281 查看
OC 单例模式
概念
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。书写步骤
创建类方法,返回对象实例.以shared,default,current开头。创建一个全局变量用来保存对象的引用
判断对象是否存在,若不存在,创建对象
编写方法
非线程安全static UserHelper * helper = nil; + (UserHelper *)sharedUserHelper { if (helper == nil) { helper = [[UserHelper alloc] init]; } return helper; }
线程安全
方法一
static UserHelper * helper = nil; + (UserHelper *)sharedUserHelper { @synchronized(self) { if (helper == nil) { helper = [[UserHelper alloc] init]; } } return helper; }
方法二
static UserHelper * helper = nil; + (void)initialize { if ([self class] == [UserHelper class]) { helper = [[UserHelper alloc] init]; } }
写法三(苹果推荐,主要用这个)
static UserHelper * helper = nil; + (UserHelper *)sharedUserHelper { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ helper = [[UserHelper alloc] init]; }); return helper; }
相关文章推荐
- Android高效加载大图、多图解决方案,有效避免程序OOM
- 上下文菜单ContextMenu
- Nginx模块fastcgi_cache的几个注意点 转
- sprintf、strcpy和memcpy的区别
- 冒泡选择排序
- Win10免费升级超级优惠仅剩2个月 Win7/Win8.1用户抓紧升级
- 设计模式 - 工厂模式
- 过滤器、拦截器、监听器的区别
- 怎么判断百度网盘分享连接已经失效?有那么简单吗?
- Activity的四种启动方式
- 四阶模仿重要公式
- ORACLE GROUPING函数的使用
- 结束北漂生活倒计时中
- Web应用程序项目以配置使用IIS。未找到Web服务器
- 修改UIWebView中字体的大小
- java集合类详解
- 十三周作业显示
- 输入一个字符串,输出这个字符串中重复的元素及其个数
- 子集生成 二进制法
- 团队冲刺2---个人工作总结六(5.30)