Swift
发布时间:2022-03-31 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了OC和Swift中的static,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
OC: static关键字表示静态,能够放在局部变量和全局变量前面: 限定作用域:对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域; 标明生存周期:对于静态局部变量来说,在函数内以static声明的变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而
OC:
static关键字表示静态,能够放在局部变量和
全局变量前面:
- 限定作用域:对于静态全局变量来说,针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域;
- 标明生存周期:对于静态局部变量来说,在函数内以static声明的变量虽然与自动局部变量的作用域相同(即作用域都只限于函数内),但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同(一般来说,静态分配时存储空间于编译时在程序数据段分配,一次分配全程有效;而自动分配时存储空间则是于调用栈上分配,只在调用时分配与释放),且两次调用间变量值始终保持一致(变量只会被初始化一次);
Swift:
static在Swift 中表示 “类型范围作用域”,可以使用它来定义类型
属性,最初的时候,Swift
不支持class类型的类型存储
属性,static关键字只能用于非class类型中:
旧文:
static在Swift 中表示 “类型范围作用域”,这一概念有两个不同的关键字,它们分别是 static 和 class 。在非 class 的类型上下文中,我们统一使用 static 来描述类型作用域,class 关键字 是专门用在 class 类型的上下文中的,可以用来修饰类方法以及类的计算属性。类方法就是静态方法,通过类类型能直接调用。
class 中现在是不能出现类的(静态)存储属性的,我们如果写类似这样的代码的话:
class MyClass { class var bar: Bar? }
编译时会得到一个错误:
这主要是因为在 Objective-C 中就没有类变量这个概念,为了运行时的统一和兼容,暂时不太方便添加这个特性。Apple 表示今后将会考虑在某个升级版本中实装 class 类型的类存储变量,现在的话,我们只能在 class 中用 class 关键字声明方法和计算属性。
|
Swift1.2 之后,类也可以通过static关键字拥有
类型存储属性了,static相当于 class final标识符的别名,类中的static
属性拥有全局作用域和懒加载
属性。但是至此
文章写作完成时,还不能通过关键字class来定义
类型存储属性,仅能通过class定义类型计算
属性。可见后续关于类型
属性以后会更加完善。
“static” methods and properties are Now allowed in classes (as an alias for class final). You are Now allowed to declare static stored properties in classes,which have global storage and are lazily initialized on first access (like global variables).
|
struct
Point {
let
x:
Double
let
y:
Double
//
存储属性
static
let
zero = Point(x:
0
,y:
0
)
//
计算属性
static
var
ones: [Point] {
return
[Point(x:
1
,y:
1
), Point(x: -
1
, Point(x:
1
,y: -
1
),y: -
1
)] }
//
类型方法
static
func
add(p1: Point,p2: Point) -> Point {
return
Point(x: p1.
x
+ p2.
x
,y: p1.
y
+ p2.
y
) }
}
class
SomeClass {
static
var
storedTypeProperty =
"Some value."
static
var
computedTypeProperty:
Int
{
return
27
}
class
var
overrideableComputedTypeProperty:
Int
{
return
107
}
static
var
storedClassProp =
"class property not OK"
}
|
注:由于Swift还处于完善中,所以本文中关于Swift的一些描述可能在未来的失效,请注意甄别。如
内容有误,欢迎指出。
大佬总结
以上是大佬教程为你收集整理的OC和Swift中的static全部内容,希望文章能够帮你解决OC和Swift中的static所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。