iOS开发之单例模式
1、概述
單例模式是一種常用的軟件設計模式,通過單例模式可以保證系統中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數的控制并節約系統資源。
如果希望系統中某個類的對象只能存在一個,單例模式是最好的解決方案,iOS中最常見的單例就是UIApplication 。
應用場景:
音頻播放,背景音樂!
硬件資源:加速器、[UIScreen mainScreen]
一般都是通過sharedXX, mainXXX去獲得這個單例對象。
常見面試題:手寫單例
優點:
可以阻止其他對象實例化單例對象的副本,從而確保所有對象都訪問唯一實例
缺點:
單例對象一旦建立,對象指針是保存在靜態區的,單例對象在堆中分配的內存空間,會在應用程序終止后才會被釋放
?
2、單例的實現步驟
第一步:重寫allocWithZone方法
allocWithZone方法是對象分配內存空間時,最終會調用的方法,重寫該方法,保證只會分配一個內存空間
+ (id)allocWithZone:(struct _NSZone *)zone
{
??? static Ticket *instance;
static dispatch_once_t onceToken;//用來檢測是否只被執行一次
//dispatch_once是線程安全的,能夠做到在多線程的環境下Block中的代碼只會被執行一次
??? dispatch_once(&onceToken, ^{
??????? instance = [super allocWithZone:zone];
? ??});??
??? return instance;
}
?
第二步:建立sharedXXX類方法,便于其他類訪問
+ (instancetype)sharedTicket
{
??? return [[self alloc] init];
}
總結
以上是生活随笔為你收集整理的iOS开发之单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [MySQL 5.6] Performa
- 下一篇: android baidupush