IOS開發之 單例模式詳解

2021-07-02 20:55:53 字數 1119 閱讀 4964

因為沒理解透,用著不踏實,所以決定做些除錯,了解透徹!

看完如還有疑問可以進ios中高階開發群:118623167 和大家交流

按照一般的思路,如下

static 

myclass *class = nil;

@implementation myclass

+(myclass *)sharedmyclass

returnclass;

}@end

除錯發現

myclass*a = [[myclass alloc

] init];

nslog

(@"a:%@",a);

myclass *b = [myclass sharedmyclass];

nslog

(@"b:%@",b);

列印出的是a:

b: 不是乙個記憶體位址,也就是不是同乙個實體

官方如下方式實現

static 

myclass *class = nil;

@implementation myclass

+(myclass *)sharedmyclass

}returnclass;

}+(id)allocwithzone:(nszone *)zone

} returnnil; }

- (id)copywithzone:(nszone *)zone;

-(id)retain

- (unsigned)retaincount

- (id)autorelease

- (oneway void)release

@end

再除錯myclass *a = [[myclassalloc

] init];

nslog

(@"a:%@",a);

myclass*b = [myclasssharedmyclass];

nslog

(@"b:%@",b);

myclass *c = [a copy];

nslog

(@"c:%@",c);

列印出的是a:

b: c:

都是指向同一塊記憶體位址

答案已經出來了

iOS開發之單例模式

單例模式是一種常用的軟體設計模式,在應用這個模式時,單例物件的類必須保證只有乙個例項存在。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。單例的實現步驟 1 重寫alloc...

iOS 開發之單例模式

單例就是工程中只初始化一次,節省記憶體空間,或者共享資源。例如在建立藍芽類,或者做wifi通訊時經常用到。也可以用來傳值。一下介紹兩種建立單例的方法 一,考慮執行緒安全的寫法 考慮執行緒安全的寫法 return modeltool物件 instancetype sharemodel return m...

ios 開發之單例模式

在ios開發中,有很多地方都選擇使用單例模式。有很多時候必須要建立乙個物件,並且不能建立多個,用單例就為了防止建立多個物件。單例模式的意思就是某乙個類有且只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。一 單例模式的三要點 1.該類有且只有乙...