我想了解Swift中静态变量的工作原理。
当一个对象在swift中声明为静态变量时,静态变量将被初始化。
class StaticSample1{
static let someVariable = "static variable string"
}
如果使用如下的静态变量
class StaticSample2{
static let image1 = UIImage(name:"someimage")
}
someimage.png存在于iOS应用的资产中。
如果image1的大小很大,是否会有内存或性能影响。想知道是否有超过1个类似于image1的变量,让我们考虑以下
class StaticSample3{
static let image1 = UIImage(name:"someimage")
static let image2 = UIImage(name:"someimage")
static let image3 = UIImage(name:"someimage")
static let image4 = UIImage(name:"someimage")
static let image5 = UIImage(name:"someimage")
static let image6 = UIImage(name:"someimage")
static let image7 = UIImage(name:"someimage")
static let image8 = UIImage(name:"someimage")
static let image9 = UIImage(name:"someimage")
static let image10 = UIImage(name:"someimage")
}
是否会影响iOS应用程序的内存或性能。
另请注意,静态变量仅在第一次使用静态变量时才会加载到内存中,并将保留在内存中,直到应用程序退出。
此外,我想了解swift中的工作对象是怎样的。它与目标C中的相同。
我想了解使用swift语言创建的对象/实例的工作。它们是否仍存储在堆中,并且使用堆栈维护引用。
静态变量的情况如何?静态变量是否存储在堆栈中?
答案 0 :(得分:7)
您基本上创建了一个名为StaticSample.image1
的全局变量。无论您创建StaticSample
的实例数是多少,这些变量中只有一个。该变量在程序第一次询问其值时初始化。