iOS單例模式(Singleton)
單例模式的意思就是:只有一個實例;單例模式確保每個類只有一個實例,而且自行實例化并向整個系統提供這個實例。這個類稱為:單例類。
單例模式要點
要點有三個:1、某個類只能有一個實例;2、這個類必須自行創建這個實例;3、這個類必須自行向整個系統提供這個實例;
單例模式的優點
1、實例控制:Singleton會阻止其他對象實例化自己的Singleton對象的副本,從而保證所有對象都訪問唯一實例;
2、靈活性:因為類控制了實例化過程,所以類可以更加靈活的修改實例化過程;
在Objective-c中,要實現一個單例類,至少需要做以下4個步驟:
1、為單例對象實現一個靜態實例,并進行初始化,最后設置為nil;
2、實現一個實例構造方法,檢查上面聲明的靜態實例是否為nil,如果是,則新建并返回一個本類的實例;
3、重寫allocWithZone方法,用來保證其他人直接使用alloc 和 init 試圖獲得一個新實例的時候不產生一個新實例。
4、適當實現allocWithZone, copyWithZone, release, autorelease.
iOS 系統的單例類(6個):
UIApplication(應用程序實例);
NSNotificationCenter(消息中心);
NSFileManager(文件管理) ;
NSUserDefaults (應用程序設置);
NSURLCache (請求緩存);
NSHTTPCookieStorage (應用程序cookies池);
但是:單例對象一旦建立,對象指針是保存在靜態區的,單例對象是在堆中分配的內存空間,只有在應用程序終止后才會被釋放掉;只有在確實需要唯一使用的對象才會考慮單例模式,不要濫用單例。