iOS-OC和Swift单利创建

OC单利

#import "HttpTools.h"
+ (instancetype)shareManager;
#import "HttpTools.m"
+ (instancetype)shareManager
{
    static id instance;
    static dispatch_once_t onceToken;
    // onceToken默认等于0, 如果是0就会执行block, 如果不是0就不会执行
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

Swift单利

推荐使用

// HttpTools.swift
    static let instance: HttpTools = HttpTools()

    class func shareHttpTools() -> HttpTools {
        return instance
    }

仿OC版

// 在Swift中, 类方法中是不允许定义静态变量的
    static var once_t: dispatch_once_t = 0
    static var instance: HttpTools?
    
    /// 用于获取单粒对象的类方法
    class func shareHttpTools() -> HttpTools{
        dispatch_once(&once_t) { () -> Void in
            instance = HttpTools()
        }
        return instance!
    }

单利优缺点

优点:

1:一个类只被实例化一次,提供了对唯一实例的受控访问。
2:节省系统资源

缺点:

1: 单例对象一旦建立,对象指针是保存在静态区的,单例对象在堆中分配的内存空间,会在应用程序终止后才会被释放。
2: 单例类无法继承,因此很难进行类的扩展。
3: 单例类的职责过重,在一定程度上违背了“单一职责原则”。
4: 单例不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 比特币如火如荼,当然学习python也能帮助我们掌握比特币的行情,而且是自动的。如图,大大已经写好了获取数据的程序...
    TianAff阅读 3,203评论 1 3
  • 看到一段设置字体的代码,浏览器能识别哪个就用哪个 body{ font-family:"Helvetica Neu...
    孙孟君阅读 3,532评论 0 0
  • 哇,在实体店或者超市看到一款颜值高的香薰,或者一款新出的XXX味护理品?是不是有点想买又怕味道或者香味太浓?无奈,...
    脑洞无极限阅读 2,350评论 0 0
  • 原创2016-06-17溦梦HL溦梦真人图书馆 陪伴是最长情的告白 父亲,我爱你! 记忆中爸爸的手充满了力量,长满...
    溦时光阅读 1,711评论 0 0

友情链接更多精彩内容