类和结构体
struct Resolution{
var width = 0;
var height = 0;
}
class VideoMode{
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name:String?
}
与Objective-C语言不同的是,Swift允许直接设置结构体属性的子属性。
结构体类型的成员逐一构造器
所有结构体都有一个自动生成的成员逐一构造器,用于初始化新结构体实例中成员的属性。新实例中各个属性的初始值可以通过属性的名称传递到成员逐一构造器之中:
let vga = Resolution(width:640, height: 480)
与结构体不同,类实例没有默认的成员逐一构造器。
结构体和枚举是值类型
值类型被赋予给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝。
类是引用类型
与值类型不同,引用类型被赋予一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,引用的是已经存在的实例本身而不是其拷贝。
如果能够判定两个常量或者变量是否引用同一个类实例将会很有帮助。为了达到这个目的,Swift 内建了两个恒 等运算符:
• 等价于(===)• 不等价于( !== )
运用这两个运算符检测两个常量或者变量是否引用同一个实例:
字符串(String)、数组(Array)、和字典(Dictionary)类型的赋值与复制行为
Swift 中,许多基本类型,诸如 String , Array 和 Dictionary 类型均以结构体的形式实现。这意味着被赋值给 新的常量或变量,或者被传入函数或方法中时,它们的值会被拷贝。
Objective-C 中 NSString , NSArray 和 NSDictionary 类型均以类的形式实现,而并非结构体。它们在被赋值或 者被传入函数或方法时,不会发生值拷贝,而是传递现有实例的引用。
网友评论