在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
值类型值类型被赋予给一个变量,常数或者本身被传递给一个函数的时候,实际上操作的是其的拷贝。 集合(Collection)类型的赋值和拷贝行为
Swift 中数组(Array)和字典(Dictionary)类型均以结构体的形式实现。 在你的代码中,拷贝好像是确实是在有拷贝行为的地方产生过。 然而,在 Swift 的后台中,只有确有必要,实际(actual)拷贝才会被执行。 Swift 管理所有的值拷贝以确保性能最优化的性能, 所以你也没有必要去避免赋值以保证最优性能。(实际赋值由系统管理优化) 实际上我也不明白..就暂且当数组和字典在拷贝的时候是引用类型的 引用类型引用类型在被赋予到一个变量、常量或者被传递到一个函数时,操作的是引用,其并不是拷贝。因此,引用的是已存在的实例本身而不是其拷贝。 let tenEighty = VideoMode() tenEighty.resolution = hd tenEighty.interlaced = true tenEighty.name = "1080i" tenEighty.frameRate = 25.0 let alsoTenEighty = tenEighty alsoTenEighty.frameRate = 30.0 if tenEighty === alsoTenTighty { println("tenTighty and alsoTenEighty refer to the same Resolution instance.") }
类和结构体的选择然而,结构体实例总是通过值传递,类实例总是通过引用传递。这意味两者适用不同的任务。当你在考虑一个工程项目的数据构造和功能的时候,你需要决定每个数据构造是定义成类还是结构体。 按照通用的准则,当符合一条或多条以下条件时,请考虑构建结构体:
合适的结构体候选者包括:
在所有其它案例中,定义一个类,生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自定义数据构造都应该是类,而非结构体。 |
请发表评论