單例模式就是只有一個實例。自行實例化並向整個系統提供這個實例。
單例模式的創建 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.靈活性:因為類控制了實例化過程,所以類可以更加靈活修改實例化過程 缺點: 單例模式使得對象變成了全局的,降低了每個單獨模塊的靈活性。