137,單例模式

2021-07-09 03:46:42 字數 1433 閱讀 2639

tools.h:

#import

@inte***ce

tools :nsobject

//類方法->單例格式:share+類名或default+類名

+(instancetype)sharetools;

@end

tools.m:

#import "tools.h"

@implementationtools

+(instancetype)sharetools

static

tools *_instance =nil;

//每一次呼叫alloc方法都會呼叫一次allocwithzone

+(instancetype)allocwithzone:(struct

_nszone *)zone*/

//以下**在多執行緒中也能保證只執行一次

static

dispatch_once_t oncetoken;

dispatch_once(&oncetoken,^);

return

_instance; }

-(instancetype)copywithzone:(nszone *)zone

-(instancetype)mutablecopywithzone:(nszone *)zone

@end

main.m:

#import

#import "tools.h"

/*單例模式:類的物件成為系統中唯一的例項,提供乙個訪問點,供客戶類,共享資源

*/int main(int argc,const

char * argv)

//2015-12-24 12:25:07.865 19,單例模式[1716:302342] +[tools allocwithzone:]

//2015-12-24 12:25:07.866 19,單例模式[1716:302342]建立物件

//2015-12-24 12:25:07.866 19,單例模式[1716:302342] +[tools allocwithzone:]

//2015-12-24 12:25:07.866 19,單例模式[1716:302342] +[tools allocwithzone:]

//2015-12-24 12:25:07.866 19,單例模式[1716:302342] t1 = 0x100200740,t2 = 0x100200740,t3 = 0x100200740,t4 = 0x100200740,t5 = 0x100200740

//program ended with exit code: 0

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...

單例模式 懶漢式單例模式

單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...