我这人懒惯了,今天心血来潮来聊一聊单例设计模式,为什么会想到了它呢,因为今天面试被雷到了!其实我面过很多人,仿佛大家都知道怎么用,可为什么用,似乎都不很明白。这就是打算写一点的原因。
其实知识点比较少的,可是大家都不曾注意,似乎懂了,其实不然!就像大家都知道的一样,单例设计模式只会在内存中生成一次,程序不退出就不会被释放。可是为什么呢?那就用下面的代码来解释吧:
- (AccountManager *)sharedManager
{
static AccountManager * sharedAccountManagerInstance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
sharedAccountManagerInstance = [[self alloc] init];
});
return sharedAccountManagerInstance;
}
因为修饰当前对象用的是 static 关键字,所以此对象不会释放,除非程序退出!因为 用到了 dispatch_once 所以不会再此创建!这才是根本原因!
至于什么时候用呢,那必须是频繁使用的对象才会去用(就比如一款拍照社交的软件,拍照部分就可以用这个设计模式创建对象,避免重复创建,造成不必要的浪费),不得不用的时候才回去用(就比如后台下载)。
若有不对的地方,敬请指点和指指点点!要是觉得还可以的话,请点赞收藏!
网友评论