猿问

swift 中使用 struct 来实现单例模式,struct 为什么不会被定义两次?

代码如下:
varc=1
classSingleton{
classvarshared:Singleton{
//--struct里边的constant不会被重复定义?why?
structStatic{
staticletb=c++
staticletinstance=Singleton()
}
println("bis\(Static.b)")
returnStatic.instance
}
}
varsingle1=Singleton.shared
c++;
varsingle2=Singleton.shared
输出结果为:
bis1
bis1
问题
为什么b没有改变?
扬帆大鱼
浏览 652回答 2
2回答

翻阅古今

static关键字的含义就是不属于任何类的实例,而是属于类本身,更重要的是,static修饰的对象和变量会在类第一次被加载时存储在内存中的静态储存区域,只要程序在运行,这块区域就不会被清除掉,也就是说static修饰的instance会一直保存在静态储存区域并且只有一份。所以我们在其他类访问instance的时候,都是访问的这块区域,这就是单例模式的原理所在。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答