在Swift类或struct

时间:2016-03-06 17:49:30

标签: ios swift

我想了解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语言创建的对象/实例的工作。它们是否仍存储在堆中,并且使用堆栈维护引用。

静态变量的情况如何?静态变量是否存储在堆栈中?

1 个答案:

答案 0 :(得分:7)

您基本上创建了一个名为StaticSample.image1的全局变量。无论您创建StaticSample的实例数是多少,这些变量中只有一个。该变量在程序第一次询问其值时初始化。