單例模式就是只有一個實例。自行實例化並向整個系統提供這個實例。
單例模式的創建
1、首先在.h文件中
[plain]
#import <Foundation/Foundation.h>
@interface SingletonClass : NSObject
+ (id) sharedInstance;
@end
2、在.m文件中
[plain]
#import "SingletonClass.h"
@implementation SingletonClass
static SingletonClass * getInstance;
+ (id) sharedInstance {
@synchronized ([SingletonClass class]) {
if (getInstance == nil) {
getInstance = [[SingletonClass alloc] init];
}
}
return getInstance;
}
@end
這裡是類SingletonClass為例子。
單例模式使用
[plain
[[SingletonClass sharedInstance] xxx];
單例的銷毀
銷毀也就是對單例的釋放,在應用終止的時候實現,delegate方法如下。
[plain]
- (void)applicationWillTerminate:(UIApplication *)application
{
[SingletonClass destroyDealloc];
}
銷毀方法
[plain]
+ (void)destroyDealloc
{
if ([getInstance retainCount] != 1)
return;
[getInstance release];
getInstance = nil;
}
單例的總結
好處:
1.實例控制:Singleton 會阻止其他對象實例化其自己的 Singleton 對象的副本,從而確保所有對象都訪問唯一實例。
2.靈活性:因為類控制了實例化過程,所以類可以更加靈活修改實例化過程
缺點:
單例模式使得對象變成了全局的,降低了每個單獨模塊的靈活性。