單例的使用
來源:程序員人生 發(fā)布時間:2014-12-18 08:55:12 閱讀次數(shù):2539次
利用場景:
第1:當(dāng)訪問利用程序的某些資源時需要使用單利,比如文件操作,數(shù)據(jù)庫操作,通過單利模式的實現(xiàn)有益于資源在訪問時的管理和控制.
第2:資源同享的情況下,避免重復(fù)操作訪問資源致使性能的消耗,比如日志文件
單例:
1.重寫allocWithZone,用dispatch_once實例化1個靜態(tài)變量
2.寫1個+sharedXXX方便其他類調(diào)用
//在iOS中,所有對象的內(nèi)存空間的分配,終究都會調(diào)用allocWithZone方法
//如果要做單例,需要重寫此方法
// GCD提供了1個方法,專門用來創(chuàng)建單例的
+ (id)allocWithZone:(struct_NSZone*)zone
{
staticDemoObj*instance = nil;
// dispatch_once是線程安全的r,onceToken默許為0
staticdispatch_once_tonceToken;
// dispatch_once宏可以保證塊代碼中的指令只被履行1次
dispatch_once(&onceToken, ^{
//在多線程環(huán)境下,永久只會被履行1次,instance只會被實例化1次
instance = [superallocWithZone:zone];
});
returninstance;
}
+ (instancetype)sharedDemoObj
然后再建1個類方法, share開頭的, 直接返回。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈