objective-c中的Singleton单例模式的完整实现示例
2012-02-23 15:18
567 查看
转载自: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中单例模式的实现,应该是比较完整的包括了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单例模式的完整实现示例
- objective-c中的Singleton单例模式的完整实现示例
- objective-c中的Singleton单例模式的完整实现示例
- objective-c中的Singleton单例模式的完整实现示例
- objective-c中的Singleton单例模式的完整实现示例
- objective-c 单例模式Singleton的实现
- Objective —C 的单例模式 Singleton实现
- Singleton模式的C++实现研究(示例代码)
- Singleton模式的C++实现研究(示例代码)
- Singleton模式的C++实现研究(示例代码)
- 《模式——工程化实现及扩展》(设计模式C# 版)《创建者模式 Builder》——正文完整示例
- Singleton模式的C++实现研究(示例代码)
- Objective —C 的单例模式 Singleton实现
- [演示示例程序]Objective-C受委托的设计模式(牛仔女孩)
- Objective —C 单例模式 Singleton
- Objective-C如何自己实现一个基于数组下标的属性访问模式
- 设计模式之—单例模式(Singleton)-Java实现
- 剑指offer2 - 实现singleton模式
- ExpandableListView结合CheckBox实现单选的完整示例
- PHP工厂模式简单实现方法示例