我這人懶慣了,今天心血來潮來聊一聊單例設計模式,為什么會想到了它呢,因為今天面試被雷到了!其實我面過很多人,仿佛大家都知道怎么用,可為什么用,似乎都不很明白。這就是打算寫一點的原因。
其實知識點比較少的,可是大家都不曾注意,似乎懂了,其實不然!就像大家都知道的一樣,單例設計模式只會在內(nèi)存中生成一次,程序不退出就不會被釋放??墒菫槭裁茨??那就用下面的代碼來解釋吧:
- (AccountManager *)sharedManager
{
static AccountManager * sharedAccountManagerInstance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
sharedAccountManagerInstance = [[self alloc] init];
});
return sharedAccountManagerInstance;
}
因為修飾當前對象用的是 static 關鍵字,所以此對象不會釋放,除非程序退出!因為 用到了 dispatch_once 所以不會再此創(chuàng)建!這才是根本原因!
至于什么時候用呢,那必須是頻繁使用的對象才會去用(就比如一款拍照社交的軟件,拍照部分就可以用這個設計模式創(chuàng)建對象,避免重復創(chuàng)建,造成不必要的浪費),不得不用的時候才回去用(就比如后臺下載)。
若有不對的地方,敬請指點和指指點點!要是覺得還可以的話,請點贊收藏!