上一篇文章,提到了单例子类化的问题。正好最近,我在Stack Overflow看见一位国外高人,也谈及了单例子类化的一些内容。思考之后,总结了一些内容。其大意是利用NSDirectory存储不同子类的单例实例,这样可以很好的解决单例子类化的问题。OK,talk is cheap,show me the code! 多说无益,以下是我自己写的一段示例代码

#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方法,以进行合适的内存管理。

我是小强,请多多指教。

最新文章

  1. Oracle11G 卸载步骤
  2. Java线程中run和start方法的区别
  3. 【crunch bang】tint2配置2
  4. Windows组策略同步问题
  5. android之自定义ViewGroup和自动换行的布局的实现
  6. Sql语句中使用参数化的Top
  7. win7远程连接ubuntu14.04.1桌面
  8. mysql 索引对于select速度提升作用实验
  9. shell网络客户端
  10. 乐橙谷浅析JAVA程序员就业前景
  11. Google Python编程规范
  12. anguar使用指令写选项卡
  13. Centos常用命令之:ls和cd
  14. 修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全
  15. AST的作用
  16. ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)
  17. 4067: [Ctsc2015]gender 动态规划 网络流
  18. dbcp、c3p0、jdbc常用连接配置
  19. ecshop二次开发 使用ecshop电子商务系统的100个小问题
  20. nginx配置设置,使部分页面访问跳转到404页面

热门文章

  1. php连接sql server 2008数据库
  2. 快速构建Windows 8风格应用36-商店应用发布流程
  3. Springmvc+Spring+Hibernate搭建方法
  4. ubuntu安装wine之后进不了系统
  5. 如果你使用上述这段12行的JavaScript代码,就可以能让firefox、chrome、safari浏览器崩溃,而且还能让iphone重启,安卓手机闪退!
  6. VS2013中Python学习环境搭建
  7. JQUERY 插件开发——MENU(导航菜单)
  8. ps入门教程:画笔工具、铅笔工具、渐变工具等的使用
  9. .NET MVC4 实训记录之七(实现资源的自主访问后续)
  10. Visual Studio 换颜色