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