在Objective-C中,使用單例模式,定義一個單例類的過程如下:
1、定義一個static的類對象,初始值為nil
2、在Factory 方法中(一般都是以“sharedInstance”或者"sharedManager"命名),僅僅在第一步中聲明的static類對象為空白的情況下,使用allocWithZone:方法建立一個新對象
3、重寫allocWithZone:方法
4、添加記憶體管理方法,以保證只會出現一個該類的執行個體。
下面是蘋果官方的demo樣本:
#import "MySingletonClass.h" @implementation MySingletonClass //1、聲明一個static類型的類對象 static MySingletonClass *sharedGizmoManager = nil; //2、建立Factory 方法 + (MySingletonClass*)sharedManager { @synchronized(self){ if (sharedGizmoManager == nil) 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