iOS单例
来源:互联网 发布:演员吻戏是真的吗 知乎 编辑:程序博客网 时间:2024/06/15 04:03
iOS开发中的单例模式(singleton)是指一个类只有一个实例,单例模式确保一个类只有一个实例,自行实例化并且向整个系统提供这个实例。我们把按照上述标准实现的类称之为单例类。
1. 常见的单例
有几个Cocoa框架类是按照这种模式实现的,他们包括:NSFileManager、NSWorkspace、UIApplication、UIAccelerometer等。
2. 单例模式的要点
显然单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
3.单例模式的优点
1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。
2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程
4.单例的实现
在objective-c中要实现一个单例类,至少需要做以下四个步骤:
1、为单例对象实现一个静态实例,并初始化,然后设置成nil,
2、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,
3、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
4、适当实现allocWitheZone,copyWithZone,release和autorelease
5.代码的实现
- static MyGizmoClass *sharedGizmoManager = nil;
- + (MyGizmoClass*)sharedManager
- {
- if (sharedGizmoManager == nil) {
- sharedGizmoManager = [[super allocWithZone:NULL] init];
- }
- return sharedGizmoManager;
- }
- + (id)allocWithZone:(NSZone *)zone
- {
- return [[self sharedManager] retain];
- }
- - (id)copyWithZone:(NSZone *)zone
- {
- return self;
- }
- - (id)retain
- {
- return self;
- }
- - (NSUInteger)retainCount
- {
- return NSUIntegerMax; //denotes an object that cannot be released
- }
- - (void)release
- {
- //do nothing
- }
- - (id)autorelease
- {
- return self;
- }
0 0
- iOS单例模式
- iOS 单例模式
- IOS 单例模式
- iOS单例
- iOS 单例模式
- IOS 单例
- IOS 单例
- IOS单例模式
- ios单例模式
- iOS单例
- iOS 单例,委托
- iOS 单例模式
- iOS 单例模式
- IOS单例模式
- ios单例Singleton
- iOS 单例
- iOS 单例浅谈
- IOS 之 单例
- N皇后问题
- Linux内核源代码情景分析-内存管理之用户堆栈的扩展
- Codeforces Round #294 (Div. 2)D. A and B and Interesting Substrings
- java内存结构和对象创建的过程
- 社説 20150301 NTT回線開放 利用者メリットを広げたい
- iOS单例
- 社説 20150301 東京五輪計画 成熟都市にふさわしい大会に
- vs2013 Key
- c++学习例子静态链表ListEntry
- c++指针的理解
- UVA - 548 Tree
- WiFi 初学
- 关于Nginx的一些优化(突破十万并发)
- ios学习笔记2