在类型属性的Apple文档中,给出了以下代码:
struct AudioChannel {
static let thresholdLevel = 10
static var maxInputLevelForAllChannels = 0
var currentLevel: Int = 0 {
didSet {
if currentLevel > AudioChannel.thresholdLevel {
// cap the new audio level to the threshold level
currentLevel = AudioChannel.thresholdLevel
}
if currentLevel > AudioChannel.maxInputLevelForAllChannels {
// store this as the new overall maximum input level
AudioChannel.maxInputLevelForAllChannels = currentLevel
}
}
}
}
类型属性的定义方式与" static"相似。 C语言的变量。在上面的例子中,声明类型属性的优点是什么,如果它们没有被声明会产生什么影响或它会产生什么差异呢?
答案 0 :(得分:2)
类型变量,顾名思义,是整个类型的变量,而不是实例变量,它们是每个实例的变量。
这意味着,就您发布的代码而言,您创建的每个AudioChannel
都会为thresholdLevel
和maxInputLevelForAllChannels
提供相同的值。当某些内容更改这些变量时,所有实例都可以访问新值。