swift中正确安全声明一个单例的方法实例
Talk is cheap. Show me the code.说说原理swift在类中,类变量是能够保证线程安全,swift底层,static关键字的实际上是使用dispatch_once语法来实现的,如下一段swift编译中间产物SIL语言中的代码就能看到底层的实现.1.staic变量被声明为全局变量2.在get方法中获取变量调用了swift内嵌的builtin "once",实际上调用的是swift_once方法3.在swift源码中可以搜索到swift_once方法的内部实现如下,内部调用的就是GCD底层的dispatch_once_f,保证了单例的线程安全。在类中,将TestShareInstance的init方法设置为了private,这能保证其他人没有办法调用你的init的方法,只能调用你的shareInstane单例变量;从而保证了单例的不可修改特性。如果你要强行修改,编译器就会警告你,具体示例如下
用户评论