static MyGizmoClass *sharedGizmoManager = nil;
+ (MyGizmoClass*)sharedManager
{
@synchronized(self) {
if (sharedGizmoManager == nil) {
[[self alloc] init]; // assignment not done here
}
}
return sharedGizmoManager;
}
+ (id)allocWithZone:(NSZone *)zone
{
@synchronized(self) {
if (sharedGizmoManager == nil) {
sharedGizmoManager = [super allocWithZone:zone];
return sharedGizmoManager; // assignment and return on first allocation
}
}
return nil; //on subsequent allocation attempts return nil
}
- (id)copyWithZone:(NSZone *)zone
{
return self;
}
- (id)retain
{
return self;
}
- (unsigned)retainCount
{
return UINT_MAX; //denotes an object that cannot be released
}
- (void)release
{
//do nothing
}
- (id)autorelease
{
return self;
}
碰到allocWithZone, copyWithZone总会有个疑问,这个NSZone到底是个什么东西?
简单来说,可以想象成一个内存池,alloc或是dealloc这些操作,都是在这个内存池中操作的。
cocoa总是会配置一个默认的NSZone,任何默认的内存操作都是在这个“zone”上操作的。默认的NSZone的缺陷在于,它是全局范围的,时间一长,必然会导致内存的碎片化,如果你需要大量的alloc一些object,那么性能就会受到一些影响。
所有cocoa提供方法,你可以自己生成一个NSZone,并将alloc, copy全部限制在这个”zone“之内。
分享到:
相关推荐
OC-单例OC-单例OC-单例OC-单例OC-单例
OC单例模式的讲解。二十三种设计模式中的其中一种。
一个单例的demo
这个是OC的单例模式的源代码课件
OC宏定义实现单例设计模式实现文件,如何使用,直接上代码
Swift 实现单例 代理 通知 的设计模式 OC 跟 Swift 如何混编 以及创建 按钮 跳转 等
简单工厂模式用OC语言实现,
配套博客 http://blog.csdn.net/liuyinghui523/article/details/79423495
细究单例那些你不知道的事(OC).zip
一个使用MVVM开发模式的小demo,里面注释写的已经很详细了,有哪里看不懂的小伙伴可以在评论区留言。
OC设计模式
本篇文章主要介绍了iOS单例的创建与销毁示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
oc宝典 oc宝典 oc宝典 oc宝典 oc宝典 oc宝典oc宝典 oc宝典 oc宝典
这个单例主要是用在项目中的Model,使用在Model中之后,整个Model可以在项目中的任何一个地方都能够获取到model中的值.开发项目中比较重要,也很常用,例如获取手机号码,用户ID,状态信息等等..可以存储在这个模型里面
编程之道 ios 设计模式 源码 ,里面的代码 都能能运行
千锋OC源码:目录 OC语言教程-第1讲-基本语法 OC语言教程-第2讲-点语法 OC语言教程-第3讲-内存管理1-黄金法则 ...OC语言教程-第8讲-协议代理设计模式 OC语言教程-第9讲-Category语法 OC语言教程-第10讲-Blocks语法
[Swift]1.在OC项目里的OC代码调用Swift方法,Swift代码里调用OC代码。2.在Swift项目里的Swift代码里调用OC代码,OC代码调用Swift方法。
解析iOS设计模式的开山之作 优化Objective-C编程实践的必修宝典 由此迈入移动开发高手行列 本书讲述如何在代码中应用创建型模式、结构型模式和行为模式等,如何设计模式以巩固应用程序,并通过设计模式实例介绍MVC在...
有助于对oc使用有更深理解,提高水平,多看书有好处