SwiftUI学习-2 Struct和Class

2022-01-18  本文已影响0人  Rex_

两者的区别


数值类型在传递过程中会被copy。当然,被拷贝的只是结构,而不是每一个片段,直到我们想要进行write操作,这时候才会真的做一个按位拷贝。

举例:每一天大家都在变老,时间把“这一天”的你交给“下一天“的时候,你已经不再是那个你了,而是变老了一天的你。
“今天的你”夜深人静中思考,为什么这道题现在感觉很容易,而昨天死活做不出来,白白丢了一道大题的15分,并试图通过平行时空告诉“昨天的你”其实会这道题时...
很遗憾的是,这俩人已经不是同一个时空的你了,即使修改了”现在的你“canDo属性为true,但是"昨天的你"canDo属性仍然是false

引用类型则存于堆内存中,是通过指针传递,内存地址相同。简单来说就是“还是那一个”

举例:在不支持不鼓励不赞同不反对中,几个人分享了同一个视频会员账号,账号被其中一个人修改了账号名称,但是账号还是那一个,所以每个人都看到账号名称变了。


函数式编程专注于事物的功能特性。大多数我们看到的都是Struct,比如说:Array、Dictionary、Int、Bool、Double等。
面向对象编程重点是封装数据,并将功能放到某个容器中,一个Object对象。
复制一个东西,还是使用一个指针,导致的行为是大为不同的。




Struct利用var表达可变,或者let表达不可变。
Class中不能控制可变性,只要有它的指针就可以改变它。


Swift中大多数我们能看到的都是Struct,除了View是一种协议(Protocol)。
MVVM结构中,ViewModel永远会选择用Class来实现,因为它需要被分享使用。

上一篇 下一篇

猜你喜欢

热点阅读