1:直接作用于类型本身的属性;
2:无论创建了多少个该类型的实例,这些属性都只有唯一一份;
3:注意点:
1:跟实例的存储型属性不同,必须给存储型类型属性指定默认值,因为类型本身没有构造器,也就无法在初始化过 程中使用构造器给类型属性赋值;
2:类属性是延迟初始化的,它们只有在第一次被访问的时候才会被初始化。即使它们被多个线程同时访 问,系统也保证只会对其进行一次初始化,并且不需要对其使用 lazy 修饰符;
3:使用关键字 static 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 class 来支持子类对父 类的实现进行重写
4:写法示例
struct Person {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 1
}
}
enum Person {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 6
}
}
class Person {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 27
}
class var overrideableComputedTypeProperty: Int {
return 107
}
}
4:延迟加载属性(懒加载)
1:注意点
在没有初始化时就同时被多个线程访问,则无法保证该属性只会被初始化一次
5:只读属性
写法示例
写法一:
var names:[String]?{
reture ["hah","wowo"]
}
写法二:
var names:[String]?{
get{
return ["1","1","1","1"]
}
}