iOS知识点-14.说说Swift为什么将String,Array,Dictionary设计成值类型?

Swift vs. Objective-C
  1. 说说Swift为什么将String,Array,Dictionary设计成值类型?

要解答这个问题,就要和Objective-C中相同的数据结构设计进行比较。Objective-C中,字符串,数组,字典,皆被设计为引用类型。

  • 值类型相比引用类型,最大的优势在于内存使用的高效。值类型在栈上操作,引用类型在堆上操作。栈上的操作仅仅是单个指针的上下移动,而堆上的操作则牵涉到合并、移位、重新链接等。也就是说Swift这样设计,大幅减少了堆上的内存分配和回收的次数。同时copy-on-write又将值传递和复制的开销降到了最低。
  • String,Array,Dictionary设计成值类型,也是为了线程安全考虑。通过Swift的let设置,使得这些数据达到了真正意义上的“不变”,它也从根本上解决了多线程内存访问和操作的问题。
  • 设计成值类型还可以提升API的灵活度。例如通过实现Collection这样的协议,我们可以遍历String,使得整个开发更加灵活高效。
上一题 目录 下一题

你可能感兴趣的:(iOS知识点-14.说说Swift为什么将String,Array,Dictionary设计成值类型?)