iOS中单例类的构建
来源:互联网 发布:数组中重复次数最多的 编辑:程序博客网 时间:2024/05/22 02:25
单例类,指在项目中某个类只有一个实例对象可以被外界访问到。最初的应用是在项目中构建一个数据库的管理类,因为多个界面会较频繁的访问到数据库,如果某一个地方进行了操作更新了数据,跳转到另一个页面的时候访问,如果不使用单例,那么就需要把数据传过去,这样在需求数据的页面多了之后就很乱。如果使用单例,就会有一个整个项目都能访问到的对象,而且任何时候做出修改,在其他地方访问都是已修改的。对于操作频繁但是却只需要一个的这种角色,可是尝试使用单例模式构建。
看了一些其他的文章,里面会说到关于对其他构建对象方式的限制,如:点击打开链接,使得不管用什么方法构建都是那一个对象,我觉得其实不是很必要,稍微熟悉了单例构建,当你想构建单例对象的时候,就会去调用shareXXX或者defultXXX方法,除非你不想使用单例,才去调用alloc\init,copy之类的方法。在不限制其他构建对象方法的情况下,使用者可以构建很多的对象,但如果你想使用单例,你就不会去调用那些方法。
1、使用staic 关键词构建:
+(id)shareInstance{
static singleObject *shareObject = nil;
@synchronized(self){
if (shareObject==nil) {
shareObject = [[singleObjectalloc]init];
}
}
return shareObject;
}
@synchronized(self)是个线程锁,保证在多线程情况时,里面的代码同时只有一个再执行。而根据static关键词的属性,shareObject指针不会再被声明,只会被复制,在第一次构建后,它不再是nil,以致之后再调用这个方法时if (shareObject==nil) {
shareObject = [[singleObject alloc]init];
}
里面不会再被执行,都会返回第一次构建的对象。使用shareInstance构建的对象为同一个。
2、使用dispatch_once:
+(id)shareInstance{
static singleObject *shareObject = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shareObject = [[singleObjectalloc]init];
});
return shareObject;
}
dispatch_once保证里面的代码只执行一次,而且线程安全。shareObject使用static修饰,保证在第一次之后,shareObject都指向同一个内存地址。- iOS中单例类的构建
- iOS:UICollectionView的构建及使用
- iOS:删除itunsconnect的构建版本
- iOS:UICollectionView的构建及使用
- 从零开始构建IOS的OpenGL应用
- 构建自由通行的IOS开发者地图
- Jenkins 构建IOS 项目遇到的坑
- 一、ios的通过Xib构建UICollectionView的简单运用
- ios的通过Xib构建UICollectionView的简单运用
- 构建开发IOS应用的虚拟机开发环境实践
- IOS开发(66)之构建自己的分派队列
- [iOS]将DataSource分离并构建更轻量的UIViewController
- IOS 构建一个 给图片打水印的类方法
- iOS 提交AppStore不出现构建的版本
- ios 构建含有多个滚轮的表格
- 一步步构建iOS路由(自己已优化出新的版本)
- 一步一步构建你的iOS网络层 - HTTP篇
- ios 构建工具栏UIToolBar
- cacti 监控流量无法超过100M
- java文件对话框操作
- Ibeacon如何改变零售业
- 给 wordpress Category (分类)添加字段
- 使用Qt Designer生成的界面进行国际化编程
- iOS中单例类的构建
- HTC渴望ÇA320e-最好的智能手机,在负担得起的价格
- utf-8中的汉字占用多少字节
- Android深入浅出之Binder机制
- HTC的Jetstream - 明智的平板电脑很好的HTC Sense UI和4G
- vs 2010与opencv下的错误处理
- HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap
- oracle 常用函数
- HiPhone的Sciphone I9审查和全规格