discardableResult
discardableResult:忽略函数的返回值
inout
说到inout就得说swift中的两种参数传递方式:
1.值传递
值传递的是参数的一个副本,在调用过程中不会影响原始数据
2.指针传递
指针传递把参数本身引用(内存地址)传递过去,在调用过程中会影响原始数据
在swift的众多类型中,只有calss是指针传递,其余的如Int、Float、struct、enum都是值传递,要想让值传递以指针方式传递,有时候我们需要通过一个函数改变外面变量的值,这时swift中给我们提供了inout关键字
var value = 20
print(value) //20
func testInout (valueT : inout Int) {
valueT = valueT + 10
}
testInout(valueT : &value)
print(value) //30
即声明函数时在参数前面用inout修饰,函数内部实现改变函数外部参数,传入参数时在参数前面加&表明这个参数在函数内部是可以修改的(可将改变传到原始数据)
注意 在此插入两个概念 组件 源文件
组件:为一个代码分布独立单元,一个framework可称为一个组件,在swift中使用其他组件需要使用import
关键字
源文件:在组件内单独的源代码文件,也就是我们平时创建的 .swift
文件
private
private修饰的属性和方法只在当前类里边可以访问
fileprivate
fileprivate修饰的属性和方法在当前swift源文件下都可以访问
open
1.修饰的属性和方法在其他作用于可以被访问
2.修饰的类可以在组件内被继承,也可以在引入当前组件的组件内继承
3.修饰的类成员,可以在组件内被子类重载,也可以在引入当前组件的组件内被子类重载
public
1.修饰的类只能在组件内被继承
2.修饰的类成员只能在组件内被子类重载
internal
可以被组件内的任何源文件访问,但是其他组件不能访问
final
1.修饰的类不能被继承
2.修饰的属性或方法不能被重写
convenience
说到convenience
就得提及swift中的两种初始化方法:指定初始化方法、便利初始化方法
1.指定初始化方法
指定初始化方法就是init
方法,默认的init
方法就是指定初始化方法,init
方法不能嵌套使用。(也就是oc中系统的init
方法)
2.便利初始化方法
便利构造方法即在init
方法前面加上convenience
关键字(也就是oc中开发者自定义的初始化方法)
注意:
1.便利构造方法必须调用指定构造方法完成初始化,不能单独使用
2.便利构造方法可以嵌套使用,但最终都需要调用指定构造方法,不能被子类重写,或被子类super形式调用
3.指定构造方法不能嵌套调用
便利构造方法比指定构造方法更加灵活,为我们开发提供便利,因为更容易满足实际要求,所以在开发中根据需要开设计便利构造方法