Objective-C编程之道iOS设计模式单例解析(2)
2013-07-21 22:42
441 查看
上一篇文章,提到了单例子类化的问题。正好最近,我在Stack Overflow看见一位国外高人,也谈及了单例子类化的一些内容。思考之后,总结了一些内容。其大意是利用NSDirectory存储不同子类的单例实例,这样可以很好的解决单例子类化的问题。OK,talk is cheap,show me the code! 多说无益,以下是我自己写的一段示例代码
拥有这样的单例模式的父类,子类只需直接继承父类,即可轻松实现属于自己的类单例模式,而且同时支持很多不同子类和父类的单例并存。当然,子类也可以重新定义自己的retain,release,autorelease方法,以进行合适的内存管理。
我是小强,请多多指教。
#import "MySingleton.h" @implementation MySingleton static NSMutableDictionary * singletonDictionary=nil; +(MySingleton *) sharedInstance{ if(singletonDictionary==nil){ singletonDictionary=[NSMutableDictionary dictionaryWithObject:[NSAllocateObject(self, 0, NULL) init] forKey:[[self class]description]]; } else{ if([singletonDictionary objectForKey:[[self class] description]]==nil){ [singletonDictionary setObject:[NSAllocateObject(self, 0, NULL) init] forKey:[[self class] description]]; } } return [singletonDictionary objectForKey:[[self class] description]]; } -(void) release{ } -(id) retain{ return self; } -(id)autorelease{ return self; } -(NSUInteger)retainCount{ return NSUIntegerMax; } +(id)allocWithZone:(NSZone *)zone{ return [[self sharedInstance]retain]; } @end
拥有这样的单例模式的父类,子类只需直接继承父类,即可轻松实现属于自己的类单例模式,而且同时支持很多不同子类和父类的单例并存。当然,子类也可以重新定义自己的retain,release,autorelease方法,以进行合适的内存管理。
我是小强,请多多指教。
相关文章推荐
- [置顶] Objective-C编程之道iOS设计模式单例解析(2)
- 【读书笔记】Objective-C编程之道:iOS设计设计模式解析(1)-原型模式
- Objective-C 编程之道 iOS设计模式解析--第22章 代理
- Objective-C编程之道iOS设计模式单例解析(1)
- Objective-C编程之道:iOS设计模式解析(一)工厂模式
- iOS书摘之Objective-C编程之道 iOS设计模式解析
- Object-C编程之道 iOS设计模式解析--设计一个应用程序
- Object-C编程之道 iOS设计模式解析--单例模式
- Object-C编程之道 iOS设计模式解析--访问者模式
- Object-c 编程之道 IOS设计模式解析
- iOS书摘之Objective-C编程之道 iOS设计模式解析
- Objective-C编程之道iOS设计模式子类化单例疑惑
- Object-C编程之道 iOS设计模式解析--工厂方法
- Object-C编程之道 iOS设计模式解析--组合模式
- Object-C编程之道 iOS设计模式解析--迭代器模式
- Object-C编程之道 iOS设计模式解析--中介者模式
- iOS应用开发中运用设计模式中的组合模式的实例解析
- 设计模式之单一职责原则(iOS开发,代码用Objective-C展示)
- 解析Java的设计模式编程之解释器模式的运用
- 深入解析iOS应用开发中对设计模式中的桥接模式的使用