转载自:http://blog.csdn.net/duboleon/article/details/6337174
Objective中单例模式的实现,应该是比较完整的包括了objc的单例的各个点。详细看代码注释,注意最后用c++的析构函数实现instance的释放,所以源文件类型必须是.mm格式。
//
// FullSingleton.h
// *********
//
// Created by ********* on 12-2-23.
// Copyright (c) 2012年 ***********. All rights reserved.
//
#import
<Foundation/Foundation.h>
@interface FullSingleton :
NSObject {
}
+(FullSingleton *) getInstance;
@end
//
// FullSingleton.mm
// *********
//
// Created by ********** on 12-2-23.
// Copyright (c) 2012年 *********. All rights reserved.
//
#import
"FullSingleton.h"
static
FullSingleton * instance =
nil;
@interface FullSingleton(privateMethods)
-(void) realRelease;
@end
@implementation FullSingleton
//
获取单例~
+(FullSingleton*) getInstance {
@synchronized(self) {
if (instance ==
nil) {
[[self
alloc] init];
}
}
return
instance;
}
//
唯一一次 alloc 单例,之后均返回 nil~
+(id) allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (instance ==
nil) {
instance = [super
allocWithZone:zone];
return instance;
}
}
return nil;
}
// copy
返回单例本身~
-(id) copyWithZone:(NSZone *)zone {
return self;
}
// retain
返回单例本身~
-(id) retain {
return self;
}
// 引用计数总是为 1~
-(NSUInteger) retainCount {
return 1;
}
// release
不做任何处理~
-(oneway
void) release {
}
// autorelease
返回单例本身~
-(id) autorelease {
return self;
}
//
真 release 私有接口~
-(void) realRelease {
[super
release];
}
//
-(void) dealloc {
printf("举例:在此处做一些单例结束时的收尾处理/n");
[super
dealloc];
}
@end
//
程序结束时析构静态 c++ 类对象 garbo,在Garbo类的析构函数中释放instance~
struct Garbo {
~Garbo(){
[instance
realRelease];
}
};
static
Garbo garbo;
分享到:
相关推荐
Objective-c 单例模式的完整书写方式,用了很久的单例模式了,却发现singleton的用法也是蛮有讲究的。不过一般情况下,即使不书写完整的单例,也不会出现什么意外情况。。
NULL 博文链接:https://linxingliang.iteye.com/blog/1217811
java Singleton单例模式 java Singleton单例模式
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
singleton单例模式1
单例模式 Singleton 单例模式线程安全问题和拓展
:backhand_index_pointing_right: 实现安全的Objective C Singleton。 :beer_mug: 关于安全 “安全”是指: 多线程安全 使用安全,即通过new类方法、init方法仍然返回的是同一个单例对象。new/init方法不做处理用户...
Android Singleton单例模式运用详解
本文档,是利用C++来实现设计模式中的,单例模式,里面有内容说明和相关实例代码介绍
Java面向对象(高级)-- 单例(Singleton)设计模式
这是单例设计模式的基本示例。 您将在此仓库中找到两个示例。 首先是线程安全的单例,其次不是。 测试的输出是: synchronizedTest Started... Thread 2 instance is : ...
c++ singleton单例模式
设计模式总结-模板设计模式,单例模式(singleTon)
设计模式系列之01-单例模式(Singleton模式),很好的资源,理论实践结合讲述,逐步更新
在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样有几个好处: 1、某些类创建比较频繁,对于一些大型的对象,这可以节省一笔很大的系统开销。 2、省去了new操作符,降低了系统内存的使用频率...
单例模式的实现,创建,一个文档作为简介
单例模式是最简单的一种设计模式,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例, 本资源提供了用java语言实现简单的单例模式,供初学者参考
C# 23种设计模式之单例模式源码
Pro Objective-C Design Patterns for iOS will teach you those design patterns that have always been present at some level in your code, but were never recognized, acknowledged, or fully utilized....
C中实现单例模式7.4 子类化Singleton7.5 线程安全7.6 在Cocoa Touch框架中使用单例模式7.6.1 使用UIApplication类7.6.2 使用UIAccelerometer类7.6.3 使用NSFileManager类7.7 总结第三部分 接口适配第8章 适配器8.1 ...