Swift 中static,class与OC中的区别

oc static

可以放在全局变量前面,也可以放在局部变量前边
放在全局变量前面,限定了全局变量的作用域(只能在当前文件)
放在局部变量前面,不会改变变量的作用域,但是存储空间是以静态分配,而非默认的自动分配方式获得的,所以存储空间所在区域不同(一般来说,静态分配的存储空间于编译时在程序静态区分配,一次分配全程有效,而自动分配的存储空间则是于调用栈上飞配,只在调用时分配释放),且两次调用间变量始终保持一致(变量只会被初始化一次)

swift static class

static和class 表示 类型范围作用域 - 类型指的是class struct enum ,我们可以使用static来描述类型作用域,需要用类型名来调用该属性;class是专门用于修饰class类型的。

  • static
static 可以修饰属性和方法,但所修饰的属性和方法不能被重写。

-class

- 类方法。
class 可以修饰class类型的计算属性和方法,但是不能修饰存储属性,可以被重写。
重写可以使用class关键字,也可以使用static。
  • protocol
static和protocol
Swift中的class,struct,enum都可以实现某个指定的协议。如果我们想在protocol中定义一个类型作用域上的方法或者计算属性,应该使用哪个关键字?答案显而易见,肯定是static,因为static是通用的。
注意:在使用protocol的时候,在enum和struct中仍然使用static进行修饰,在class中,class和static都可以使用。

static 修饰方法或计算属性相当于 class final

存储属性、计算属性、类型属性

存储属性:用于存储一个常量或变量。
计算属性:不直接存储值,而是通过get、set方法来取值或赋值。同时还可以对其他的属性行进行操作。
类型属性:定义在类上的属性,用static来修饰属性,需要用类名来调用该属性

你可能感兴趣的:(Swift 中static,class与OC中的区别)