Objective-C中单例类的声明
Objective-C中单例类的声明
在Objective-C中,使用单例模式,定义一个单例类的过程如下:
1、定义一个static的类对象,出事值为nil
2、在工厂方法中(一般都是以“sharedInstance”或者"sharedManager"命名),仅仅在第一步中声明的static类对象为空的情况下,使用allocWithZone:方法创建一个新对象
3、重写allocWithZone:方法
4、添加内存管理方法,以保证只会出现一个该类的实例。
下面是苹果官方的demo示例:
- #import "MySingletonClass.h"
- @implementation MySingletonClass
- //1、声明一个static类型的类对象
- static MySingletonClass *sharedGizmoManager = nil;
- //2、创建工厂方法
- + (MySingletonClass*)sharedManager
- {
- @synchronized(self){
- if (sharedGizmoManager == nil)
- <SPAN style="WHITE-SPACE: pre"> </SPAN>sharedGizmoManager = [[super allocWithZone:NULL] init];
- }
- return sharedGizmoManager;
- }
- //3、内存管理方法,以保证在内存中存在该对象时,内存计数器中,该对象的retainCount值始终为1
- + (id)allocWithZone:(NSZone *)zone
- {
- return [[self sharedManager] retain];
- }
- - (id)copyWithZone:(NSZone *)zone
- {
- return self;
- }
- - (id)retain
- {
- return self;
- }
- - (NSUInteger)retainCount
- {
- return NSUIntegerMax; //denotes an object that cannot be released
- }
- - (id)autorelease
- {
- return self;
- }
- @end
评论暂时关闭