专注iOS开发的小渣渣

swift底层探索 04-利用sil解读关键字mutating,

2020-12-17  本文已影响0人  Henry________

swift底层探索 03 - 值类型、引用类型中知道值类型在内存中直接保存具体的值,所以说值类型内部的值只能覆盖并不能修改

下面看2种情况

1. mutating

解决---根据编译器提示

sil文件

【总结】

  1. 因为方法的一个参数self是默认编译器自带的,我们是没法进行修饰的.利用mutating + func a()语句使编译器将第一个默认参数self改为var
  2. mutating修饰方法,而inout 修饰参数

2. inout

我们都知道方法的参数默认都是let不可变的,有时需要在方法体内对传入参数做修改.
比如像这样,编译器一定会报错的:

解决---模仿mutating的处理

sil文件

【总结】

  1. inout相当于取地址,可以理解为地址传递,即引用
  2. mutating修饰方法,而inout 修饰参数
上一篇 下一篇

猜你喜欢

热点阅读