首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
iOS:创建单例对象的两种方式
时间:
2015-10-05 23:23:16
阅读:
149
评论:
0
收藏:
0
[点我收藏+]
标签:
单例模式:创建单例对象的两种方式
方式一:iOS4版本之前
static SingleClassManager *singleManager = nil;
+(SingleClassManager*)sharedManager
{
@synchronized(self) //同步加锁,在多线程中使用,可以使线程安全
{
if(singleManager == nil)
{
singleManager = [[SingleClassManager alloc]init];
}
}
return singleManager;
}
方式二:iOS5版本开始(block函数)
+(SingleClassManager *)sharedManager
{
static SingleClassManager *singleManager = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate,^{
singleManager = [[SingleClassManager alloc]init];
});
return singleManager;
}
该方法有很多优势:
1 线程安全
2 很好满足静态分析器要求
3 和自动引用计数(ARC)兼容
4 仅需要少量代码
说明:
该函数接收一个
dispatch_once
用于检查该代码块是否已经被调度的谓词(是一个长整型,实际上作为
BOOL
使用)。它还接收一个希望在应用的生命周期内仅被调度一次的代码块,对于本例就用于shared实例的实例化。
dispatch_once
不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着你不需要使用诸如
@synchronized
之类的来防止使用多个线程或者队列时不同步的问题。
iOS:创建单例对象的两种方式
标签:
原文地址:http://www.cnblogs.com/XYQ-208910/p/4856387.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!