[置顶] Objective-C编程之道iOS设计模式单例解析(2)
2024-09-20 14:23:31
上一篇文章,提到了单例子类化的问题。正好最近,我在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方法,以进行合适的内存管理。
我是小强,请多多指教。
最新文章
- Oracle11G 卸载步骤
- Java线程中run和start方法的区别
- 【crunch bang】tint2配置2
- Windows组策略同步问题
- android之自定义ViewGroup和自动换行的布局的实现
- Sql语句中使用参数化的Top
- win7远程连接ubuntu14.04.1桌面
- mysql 索引对于select速度提升作用实验
- shell网络客户端
- 乐橙谷浅析JAVA程序员就业前景
- Google Python编程规范
- anguar使用指令写选项卡
- Centos常用命令之:ls和cd
- 修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全
- AST的作用
- ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)
- 4067: [Ctsc2015]gender 动态规划 网络流
- dbcp、c3p0、jdbc常用连接配置
- ecshop二次开发 使用ecshop电子商务系统的100个小问题
- nginx配置设置,使部分页面访问跳转到404页面
热门文章
- php连接sql server 2008数据库
- 快速构建Windows 8风格应用36-商店应用发布流程
- Springmvc+Spring+Hibernate搭建方法
- ubuntu安装wine之后进不了系统
- 如果你使用上述这段12行的JavaScript代码,就可以能让firefox、chrome、safari浏览器崩溃,而且还能让iphone重启,安卓手机闪退!
- VS2013中Python学习环境搭建
- JQUERY 插件开发——MENU(导航菜单)
- ps入门教程:画笔工具、铅笔工具、渐变工具等的使用
- .NET MVC4 实训记录之七(实现资源的自主访问后续)
- Visual Studio 换颜色