Swift--单例

Swift 1.2之前要实现单例,无非就是这三种方式:全局变量,内部变量和 dispatch_once 方式。但是1.2之后,Swift中就添加了 static let 和 static var 这样的类变量的支持,使得单例的实现简化了很多。

//方法一

classAppShared {


    privatestaticlet_sharedInstance =AppShared()

    classfuncsharedInstance() ->AppShared{


        return _sharedInstance

    }

    private init() {}//私有化init方法

}

//使用方式AppShared.sharedInstance()

//方法二

classAppShared2 {


     staticletsharedInstance =AppShared2()


    private init() {}//私有化init方法

}

//使用方式AppShared2.sharedInstance

重点:为什么要保证init的私有化?因为只有init()是私有的,才能防止其他对象通过默认构造函数对这个类对象直接创建,确保单例是独一无二的。在Swift中,所有对象的构造器默认都是public,所以需要重写init让它成为私有的。另外,也可以使不规范的写法报错,如var a1 = AppShared2() ,就会编译报错,不能通过。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 虽然入坑时曾经用Swift2.0写过4个多月代码,后来换公司项目又用OC了,现在打算用Swift写代码了. OC...
    plantseeds阅读 9,995评论 0 5
  • 1.单例是一个在 Cocoa 中很常用的模式了。对于一些希望能在全局方便访问的实例,或者在 app 的生命周期中只...
    IIronMan阅读 598评论 8 3
  • swift中私有变量是会自定调用dispatch_once的 class Network: NSObject {/...
    心情的颜色阅读 257评论 0 1
  • 1. 充足的光源 举个极端的栗子,拥有再牛叉的设备和道具,在黑暗里是拍不出任何视频的。如果灯光不充足,视频里会充斥...
    嘟咪阅读 10,870评论 0 2
  • 城市之光 光芒虽小,却能照亮整个城市。谁不曾渴望变成一个超级英雄,谁不曾渴...
    叁两阅读 183评论 0 1