[DesignPattern] 单例 Singleton


什么是单例设计呢?在我的理解就是系统永远只会留一块记忆体空间给它,永远不会消失,除非你主动摧毁,无论你呼叫它几次,永远只有一份存在
其实Foundation这个Framework里面也有一些类别也有用到单例模式,
像是[NSNotificationCenter defaultCenter][NSUserDefaults standardUserDefaults]之类的,只要有在.h里面看到

+(classname*) standardClassName或是+(classname*) defaultClassName之类的都是用到单例模式

什么时候会用到呢?
比如有个数据资料需要在整个APP里面共用不能消失,这时候就派上用场了(需要共用的时候)

那要怎么样自己建立一个单例类别呢?

+ (SAlertView*)sharedView {
    static SAlertView *sharedInstance = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

只需用dispatch_once就能轻轻松松的创建一个单例

我做了一个Demo来比较有用单例跟没用单例的差别

SAlertView是我创的单例类别,UIAlertView是一般提示UI类别,
我建立了两个Button来呼叫这两个类别,观察这两类别在App里面生存的数量
在这里可以很清楚的看见,不论我按几次产生单例,它的总数量永远是1,但是非单例却会一直增加 ... ... ..



Demo位置
https://github.com/joyce-328/SingletonPattern.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值