iOS开发之单l例模式(Singleton)
来源:互联网 发布:ubuntu mysql my.cnf 编辑:程序博客网 时间:2024/06/05 15:27
一、什么是单利?
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
作用:单例模式的使用场合:在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次),应该让这个类创建出来的对象永远只有一个。
(一)单利的创建
习惯上单例以下面三个单词开头
sharedXXXX defaultXXX currentXXX
<pre name="code" class="objc"><pre name="code" class="html"><span style="font-size:18px;">static id sharedManager;+ (id)sharedThemeManager{ if (sharedManager == nil) { // 第一次进入调用 把sharedManafer存于全局变量中 sharedManager = [[self alloc]init]; } // 第2次 第3次 。。。。 都会使用第一次创建好的变量 return sharedManager;}</span>
(二)单例的运用
ShareThem *sm1 = [ShareThem sharedThemeManager]; ShareThem *sm2 = [ShareThem sharedThemeManager]; NSLog(@"%@,%@",sm1,sm2);
//两次打印,地址相同// <ShareThem: 0x7fc65b53b550>,<ShareThem: 0x7fc65b53b550>(三)单例的各种写法
////2. 加锁的写法 防止多个线程同时走alloc方法//static id sharedManager;//+ (id)sharedThemeManager{// @synchronized(self){ // 这段代码,如果多个线程进入这段代码,只允许走一个线程// if (sharedManager == nil) {// // 第一次进入调用 把sharedManafer存于全局变量中// sharedManager = [[self alloc]init];// }//}// // 第2次 第3次 。。。。 都会使用第一次创建好的变量// return sharedManager;//}
// 3.GCD写法// static id sharedManager;//+ (id)sharedThemeManager//{// static dispatch_once_t onceToken;// dispatch_once(&onceToken, ^{// sharedManager = [[self alloc]init];// });// return sharedManager;//}单例的全面写法(一般时只要保证用类方法,就不用写了)
+ (id)allocWithZone:(struct _NSZone *)zone{ // alloc 会用 return [[self sharedThemeManager] retain];}+ (id) copyWithZone:(struct _NSZone *)zone{ return self;}- (id)retain{ return self;}- (oneway void)release{ }- (NSUInteger)retainCount{ return UINT_MAX;}- (id)autorelease{ return self;}
0 0
- iOS开发之单l例模式(Singleton)
- iOS开发单例模式(Singleton)
- iOS开发之设计模式(一)单例模式(Singleton)
- iOS设计模式之 Singleton(单例模式)
- Singleton 单例模式 -IOS开发
- Singleton 单例模式 -IOS开发
- Singleton 单例模式 -IOS开发
- Singleton 单例模式 -IOS开发
- iOS 21种设计模式之单例(Singleton)
- iOS 21种设计模式之单例(Singleton)
- ios 单例模式(singleton)
- iOS的单例模式(singleton)
- iOS的单例模式(singleton)
- iOS 单例模式(Singleton)
- iOS的单例模式(singleton)
- IOS中的单例模式(Singleton)
- iOS Singleton 单例模式
- IOS单例模式(Singleton)
- Quartz2D-2(画不同的线)
- ios开发代码规范
- Codeforces Round #290 (Div. 2)D
- 压岁干货】精彩技术博客兼优秀源码集锦
- WMS仓库管理系统---(13)订单管理--创建订单
- iOS开发之单l例模式(Singleton)
- SBT(BZOJ1208)
- 虚拟机增加磁盘空间
- Spring MVC数据绑定大全
- spring每个jar包的作用
- 如何给你的Android 安装文件(APK)瘦身
- Leetcode_Partition List
- jquery操作iframe父级页面元素的方法
- FatMouse' Trade