iOS 单例

单例,即是在整个项目中,这个类的对象只能被初始化一次。
比如系统的通知中心:

[NSNotificationCenter defaultCenter]

那么,单例有什么好处呐?

You obtain the global instance from a singleton class through a factory method. The class lazily creates its sole instance the first time it is requested and thereafter ensures that no other instance can be created. A singleton class also prevents callers from copying, retaining, or releasing the instance. You may create your own singleton classes if you find the need for them. For example, if you have a class that provides sounds to other objects in an application, you might make it a singleton.

简单来说:全局可用,线程安全!
打个比方说:我们有一款播放视频的APP,但是我不能为每一个视频文件都创建一个播放器吧?我们只需要创建一个播放器,去播放我们需要看的视频,而这个播放器就可以称为“单例播放器”,全局可用,保证其唯一性。我们播放其中一个视频的时候,不能同时播放其他视频,线程安全。
那么我们创建单例怎么去创建呐,下面有两种方法:
1:

static NFDbManager *DefaultManager = nil;

+ (NFDbManager *)defaultManager {
    
    if (!DefaultManager) DefaultManager = [[self allocWithZone:NULL] init];
    
    return DefaultManager;
}

2:

+ (NFDbManager *)sharedManager
{
    static NFDbManager *sharedAccountManagerInstance = nil;
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        sharedAccountManagerInstance = [[self alloc] init];
    });
    return sharedAccountManagerInstance;
}

开发过程中会遇到很多这样全局唯一的,那么我们就可以创建一个单例对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 一、单例是什么?(aplɪˈkeɪʃ(ə)n 申请) 在 Foundation 和 Application Kit...
    甘哲157阅读 11,290评论 6 22
  • 在开发中经常会用到单例设计模式,目的就是为了在程序的整个生命周期内,只会创建一个类的实例对象,而且只要程序不被杀死...
    零度_不结冰阅读 3,199评论 0 0
  • 原文地址 http://www.cocoachina.com/ios/20160907/17497.html 在开...
    Amok校长阅读 3,621评论 0 0
  • 阳春三月,草长莺飞;阳春三月,柳绿花红。这三月指的是农历三月。农历三月,是春意正浓时,是姹紫嫣红芳菲天吧! 三...
    悄然而醉阅读 4,276评论 0 0

友情链接更多精彩内容