![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Swift
oneMelon
这个作者很懒,什么都没留下…
展开
-
结构体与类,值类型与引用类型
结构体与类的重要区别Swift中,结构体与类的一个重要区别就是结构体是一个值类型而类是一个引用类型。如果定义一个全局变量的结构体,其数据将存储在数据段;而如果定义一个全局变量的类对象,数据段将存放其在堆空间的指针,其实际的数据将存储在堆空间(和类型信息与引用计数一起)。值类型与引用类型值类型与引用类型之间的一个重要差异在于,如果将一个值类型赋值给一个变量/常量,是直接将所有内容拷贝一份;而引用类型赋值给变量/常量,实际上是将内存地址拷贝一份,属于浅拷贝 (shallow copy)。实际上在Swif原创 2020-12-10 23:50:44 · 1250 阅读 · 0 评论 -
if-else, switch, for/while循环流程控制的底层实现
if-else 的实现任意编写一段 if-else 用作测试,如下:var i = 20if i > 10 { i = 1} else { i = 2}通过汇编代码来看计算机为了做出 if-else 的选择进行了哪些工作。编译后的汇编代码如下:TestSwift`main: 0x1000033a0 <+0>: pushq %rbp 0x1000033a1 <+1>: movq %rsp, %rbp 0x10原创 2020-12-05 20:17:35 · 512 阅读 · 0 评论 -
Swift枚举类在内存中的存储
首先给出结论:Swift的枚举量可以有关联值或原始值。在有关联值的情况下,Swift会根据所需内存空间最大的case为枚举变量分配内存,同时再多给出一个字节作为标志用于区分,但在出现关联值为Bool值的情况下会可能会将bool与用于区分的标志存储在同一个字节当中以节约空间,因为Bool实际上只需要1位存储;在有原始值的情况下,原始值并不存放在枚举变量当中,其所占空间大小与枚举变量所占空间大小无关。swift的枚举类可以绑定其他类型的值存储:enum TestEnum { case test0原创 2020-12-03 23:07:55 · 519 阅读 · 0 评论