说实话,之前搞清楚了,但是一阵儿不碰,就又忘记了,趁着记忆还热乎,记录一下。 看下面一段代码
想要点击按钮然后让counter自增,在上面的文本组件中显示。
按照oc的逻辑我们应该像下面这样实现
但是报错了。
什么意思?self is immutable。
mutable是可变的,immutable就是不可变的,那么就清楚了,self是不可变的。
self是啥?
我们在结构体里面调用self,你说self是啥?当然是结构体了。
问题:结构体里面定义的变量,不能修改吗?
说实话,做oc做得久了,对于struct真的很陌生。一瞬间,我不确定了。那怎么办呢?回忆回忆。 回忆完毕,参见juejin.cn/spost/74362…
回到我们的困境
这里不能修改的原因我们找到了,那我们也能添加一个mutating来修复吗?
可以知道是不行的。@state修饰符来了。
可以发现,代码实现完毕。 但是仍旧有一点需要注意的。在oc等命令式语言中,我们修改了值之后,通常还要做一步,就是赋值。
仅仅更新数值,是无法更新ui的。 所以**@state起到了一个更新值和更新ui的作用** 。